从官网上下载:docker-engine-17.03.1.ce-1.el7.centos.x86_64.rpm
docker-engine-selinux-17.03.1.ce-1.el7.centos.noarch.rpm
docker的基本使用
yum install docker-engine-17.03.1.ce-1.el7.centos.x86_64.rpm
docker-engine-selinux-17.03.1.ce-1.el7.centos.noarch.rpm
# 查看docker的信息
[root@foundation23 Desktop]# docker info
Containers: 1
Running: 1
Paused: 0
Stopped: 0
Images: 1
Server Version: 17.03.1-ce
Storage Driver: overlay
Backing Filesystem: xfs
Supports d_type: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Swarm: inactive
[root@foundation23 Desktop]# systemctl start docker.service
[root@foundation23 Desktop]# docker version
Client:
Version: 17.03.1-ce
API version: 1.27
Go version: go1.7.5
Git commit: c6d412e
Built: Fri Mar 24 00:36:45 2017
OS/Arch: linux/amd64
导入镜像
[root@foundation23 Desktop]# docker load -i game2048.tar
011b303988d2: Loading layer 5.05 MB/5.05 MB
36e9226e74f8: Loading layer 51.46 MB/51.46 MB
192e9fad2abc: Loading layer 3.584 kB/3.584 kB
6d7504772167: Loading layer 4.608 kB/4.608 kB
88fca8ae768a: Loading layer 629.8 kB/629.8 kB
Loaded image: game2048:latest
[root@foundation23 Desktop]#ip addr
9: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 02:42:80:b7:7f:87 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 scope global docker0
-d表示打入后台
[root@foundation23 Desktop]# docker run -d --name vm1 game2048
19e705e933c48b055420df936c2929047c873ae5d6951e28896a94966c59bd2c
[root@foundation23 Desktop]# docker images game2048
REPOSITORY TAG IMAGE ID CREATED SIZE
game2048 latest 19299002fdbe 20 months ago 55.5 MB
[root@foundation23 Desktop]# docker inspect vm1
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
查看docker运行进程
[root@foundation23 Desktop]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
19e705e933c4 game2048 "/bin/sh -c 'sed -..." 22 minutes ago Up 22 minutes 80/tcp, 443/tcp vm1
查看docker所有进程
[root@foundation23 Desktop]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
19e705e933c4 game2048 "/bin/sh -c 'sed -..." 22 minutes ago Up 22 minutes 80/tcp, 443/tcp vm1
不用做这个
[root@foundation23 Desktop]# docker rm vm1 删除容器
测试:浏览器上输入172.17.0.2
端口映射:在客户端直接输入服务器ip和端口直接显示所示内容
[root@foundation23 web]# docker run -d --name vm3 -p 9090:80 nginx
c268186a7df8030284a3e35bd53c035a90c71de80233f419392e6d4bfbfa7854
# 查看系统上使用的镜像
[root@foundation23 web]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest c82521676580 3 weeks ago 109 MB
game2048 latest 19299002fdbe 20 months ago 55.5 MB
# 查看docker进程
[root@foundation23 web]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c268186a7df8 nginx "nginx -g 'daemon ..." 19 seconds ago Up 18 seconds 0.0.0.0:9090->80/tcp vm3
1b697cc98bfa nginx "nginx -g 'daemon ..." About an hour ago Up About an hour 0.0.0.0:8080->80/tcp vm2
浏览器上输入:172.25.254.23:9090
首先在阿里云那里注册帐号
从网上下载镜像
[root@foundation23 Desktop]# cd /etc/docker/
[root@foundation23 docker]# ls
key.json
[root@foundation23 docker]# vim demon.json
写入阿里云那里得到的加速器地址
https://esj04lnp.mirror.aliyuncs.com
[root@foundation23 docker]# sudo systemctl daemon-reload
[root@foundation23 docker]# sudo systemctl restart docker
从网上下载镜像
[root@foundation23 docker]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
be8881be8156: Pull complete
32d9726baeef: Pull complete
87e5e6f71297: Pull complete
Digest: sha256:d85914d547a6c92faa39ce7058bd7529baacab7e0cd4255442b04577c4d1f424
Status: Downloaded newer image for nginx:latest
[root@foundation23 docker]# cd /tmp/
[root@foundation23 tmp]# mkdir docker
[root@foundation23 tmp]# cd docker/
[root@foundation23 docker]# mkdir web
[root@foundation23 docker]# cd web/
[root@foundation23 web]# vim index.html
[root@foundation23 web]# docker run -d --name vm2 -v /tmp/docker/web:/usr/share/nginx/html nginx
<h1>www.westos.org</h1>
<h1>www.westos.org</h1>
<h1>www.westos.org</h1>
<h1>www.westos.org</h1>
1989efff5b768e6dee51e89084e58f75da759c0de168642ebf8dca56bcbbe57d
[root@foundation23 web]# docker inspect vm2
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
浏览器输入172.17.0.2
在文件里直接修改,容器中的信息也随之修改,因为之前已经将这个文件挂载到容器的发布目录
[root@foundation23 web]# vim index.html
<h1>www.westos.org</h1>
<h1>www.westos.org</h1>
<h1>www.westos.org</h1>
<h1>www.westos.org</h1>
www.westos.org
数据卷的挂载:数据备份
第一种:进行挂载
[root@foundation23 docker]# cd /tmp/
[root@foundation23 tmp]# cd data1/
[root@foundation23 data1]# ls
[root@foundation23 data1]# touch file
[root@foundation23 data1]# rm -fr file
[root@foundation23 data1]# cd ..
[root@foundation23 tmp]# cd data2/
[root@foundation23 data2]# touch file2
[root@foundation23 data2]#
两个进行比较
[root@foundation23 ~]# docker run -it --name vm1 -v /tmp/data1:/data1 -v /tmp/data2:/data2:ro -v /etc/yum.repos.d/yum.repo:/etc/yum.repos.d/yum.repo:ro rhel7 bash
bash-4.2# cd /data1/
bash-4.2# ls
file
bash-4.2# ls
bash-4.2# cd /data2/
bash-4.2# ls
file2
bash-4.2# touch file2
touch: cannot touch 'file2': Read-only file system
bash-4.2# yum repolist
Skipping unreadable repository '///etc/yum.repos.d/rhel7.repo'
rhel7.3 | 4.1 kB 00:00:00
(1/2): rhel7.3/group_gz | 136 kB 00:00:00
(2/2): rhel7.3/primary_db | 3.9 MB 00:00:00
repo id repo name status
rhel7.3 rhel7.3 4751
repolist: 4751
第二种:数据卷的挂载
创建一个数据卷
[root@foundation23 ~]# docker create --name datavol -v /tmp/data1:/data1 -v /tmp/data2:/data2:ro -v /etc/yum.repos.d/yum.repo:/etc/yum.repos.d/yum.repo:ro rhel7 bash
56389415b78d755765950b35f4580e36aaae5c71f568c759e7629962e05f8447
[root@foundation23 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@foundation23 ~]# docker run -it --name vm1 --volumes-from datavol rhel7 bash
测试:
容器vm1:
[root@foundation23 ~]# docker run -it --name vm1 --volumes-from datavol rhel7 bash
bash-4.2# cd /data1/
bash-4.2# touch file1
bash-4.2# cd ..
主机:
[root@foundation23 tmp]# cd data1/
[root@foundation23 data1]# ls
file1
容器:
bash-4.2# cd ..
bash-4.2# cd /data2/
bash-4.2# touch file2
touch: cannot touch 'file2': Read-only file system
真机:
[root@foundation23 tmp]# cd data2/
[root@foundation23 data2]# touch file2
容器:
bash-4.2# ls
file2
容器关联
[root@foundation23 ~]# docker run -d --name vm1 -p 8080:80 nginx
3d93d254ed019c3f97c7244f9a02c305c704a311519cf17429c87ef1319a0621
[root@foundation23 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3d93d254ed01 nginx "nginx -g 'daemon ..." 7 seconds ago Up 6 seconds 0.0.0.0:8080->80/tcp vm1
[root@foundation23 ~]# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DOCKER all -- 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DOCKER all -- 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE match dst-type LOCAL
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 172.17.0.0/16 0.0.0.0/0
RETURN all -- 192.168.122.0/24 224.0.0.0/24
RETURN all -- 192.168.122.0/24 255.255.255.255
MASQUERADE tcp -- 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
MASQUERADE udp -- 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
MASQUERADE all -- 192.168.122.0/24 !192.168.122.0/24
MASQUERADE tcp -- 172.17.0.2 172.17.0.2 tcp dpt:80
Chain DOCKER (2 references)
target prot opt source destination
RETURN all -- 0.0.0.0/0 0.0.0.0/0
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080 to:172.17.0.2:80
[root@foundation23 ~]# docker run -it --name vm2 --link vm1:nginx ubuntu
# 环境变量
root@3ba49c51518b:/# env
HOSTNAME=3ba49c51518b
TERM=xterm
NGINX_ENV_NJS_VERSION=1.15.2.0.2.2-1~stretch
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:
root@3ba49c51518b:/# ping nginx
PING nginx (172.17.0.2) 56(84) bytes of data.
64 bytes from nginx (172.17.0.2): icmp_seq=1 ttl=64 time=0.113 ms
64 bytes from nginx (172.17.0.2): icmp_seq=2 ttl=64 time=0.098 ms
^C
--- nginx ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.098/0.105/0.113/0.012 ms