一、 Docker安装
快速安装Docker
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo yum install -y docker-ce
检查Docker安装版本
[root@Docker ~]# docker -v Docker version 19.03.13, build 4484c46d9d
启用Docker服务与开机启动
[root@Docker ~]# systemctl start docker
[root@Docker ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@Docker ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2020-11-02 11:19:41 CST; 13s ago
Docs: https://docs.docker.com
Main PID: 4190 (dockerd)
CGroup: /system.slice/docker.service
└─4190 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Nov 02 11:19:39 Docker dockerd[4190]: time="2020-11-02T11:19:39.792639487+08:00" level=info msg="scheme \"unix\" not registered, fallb…ule=grpc
Nov 02 11:19:39 Docker dockerd[4190]: time="2020-11-02T11:19:39.793114923+08:00" level=info msg="ccResolverWrapper: sending update to …ule=grpc
Nov 02 11:19:39 Docker dockerd[4190]: time="2020-11-02T11:19:39.793153439+08:00" level=info msg="ClientConn switching balancer to \"pi…ule=grpc
Nov 02 11:19:39 Docker dockerd[4190]: time="2020-11-02T11:19:39.966020891+08:00" level=info msg="Loading containers: start."
Nov 02 11:19:41 Docker dockerd[4190]: time="2020-11-02T11:19:41.087451796+08:00" level=info msg="Default bridge (docker0) is assigned …address"
Nov 02 11:19:41 Docker dockerd[4190]: time="2020-11-02T11:19:41.456084302+08:00" level=info msg="Loading containers: done."
Nov 02 11:19:41 Docker dockerd[4190]: time="2020-11-02T11:19:41.487859006+08:00" level=info msg="Docker daemon" commit=4484c46d9d grap…19.03.13
Nov 02 11:19:41 Docker dockerd[4190]: time="2020-11-02T11:19:41.488088145+08:00" level=info msg="Daemon has completed initialization"
Nov 02 11:19:41 Docker dockerd[4190]: time="2020-11-02T11:19:41.765544592+08:00" level=info msg="API listen on /var/run/docker.sock"
Nov 02 11:19:41 Docker systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.
二、 Docker镜像管理
查找镜像:
[root@Docker ~]# docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 6263 [OK]
ansible/centos7-ansible Ansible on Centos7 132 [OK]
consol/centos-xfce-vnc Centos container with "headless" VNC session… 123 [OK]
jdeathe/centos-ssh OpenSSH / Supervisor / EPEL/IUS/SCL Repos - … 115 [OK]
centos/systemd systemd enabled base container. 86 [OK]
centos/mysql-57-centos7 MySQL 5.7 SQL database server 84
imagine10255/centos6-lnmp-php56 centos6-lnmp-php56 58 [OK]
tutum/centos Simple CentOS docker image with SSH access 46
centos/postgresql-96-centos7 PostgreSQL is an advanced Object-Relational … 46
kinogmt/centos-ssh CentOS with SSH 29 [OK]
pivotaldata/centos-gpdb-dev CentOS image for GPDB development. Tag names… 13
guyton/centos6 From official centos6 container with full up… 10 [OK]
centos/tools Docker image that has systems administration… 6 [OK]
drecom/centos-ruby centos ruby 6 [OK]
pivotaldata/centos Base centos, freshened up a little with a Do… 5
pivotaldata/centos-mingw Using the mingw toolchain to cross-compile t… 3
mamohr/centos-java Oracle Java 8 Docker image based on Centos 7 3 [OK]
darksheer/centos Base Centos Image -- Updated hourly 3 [OK]
pivotaldata/centos-gcc-toolchain CentOS with a toolchain, but unaffiliated wi… 3
indigo/centos-maven Vanilla CentOS 7 with Oracle Java Developmen… 1 [OK]
blacklabelops/centos CentOS Base Image! Built and Updates Daily! 1 [OK]
mcnaughton/centos-base centos base image 1 [OK]
smartentry/centos centos with smartentry 0 [OK]
pivotaldata/centos7-dev CentosOS 7 image for GPDB development 0
pivotaldata/centos6.8-dev CentosOS 6.8 image for GPDB development 0
下载镜像:
[root@Docker ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
3c72a8ed6814: Pull complete
Digest: sha256:76d24f3ba3317fa945743bb3746fbaf3a0b752f10b10376960de01da70685fbd
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
查看镜像:
[root@Docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 0d120b6ccaa8 2 months ago 215MB
删除镜像:
[root@Docker ~]# docker rmi centos{镜像名称或镜像ID}
Untagged: centos:latest
Untagged: centos@sha256:76d24f3ba3317fa945743bb3746fbaf3a0b752f10b10376960de01da70685fbd
Deleted: sha256:0d120b6ccaa8c5e149176798b3501d4dd1885f961922497cd0abef155c869566
Deleted: sha256:291f6e44771a7b4399b0c6fb40ab4fe0331ddf76eda11080f052b003d96c7726
镜像标签(类似VMware链接快照):
[root@Docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 0d120b6ccaa8 2 months ago 215MB
leon_centos latest 0d120b6ccaa8 2 months ago 215MB
leon_centos leontag 0d120b6ccaa8 2 months ago 215MB
取消标签:
[root@Docker ~]# docker rmi leon_centos
Untagged: leon_centos:latest
[root@Docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
leon_centos leontag 0d120b6ccaa8 2 months ago 215MB
centos latest 0d120b6ccaa8 2 months ago 215MB
[root@Docker ~]# docker rmi leon_centos:leontag
Untagged: leon_centos:leontag
[root@Docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 0d120b6ccaa8 2 months ago 215MB
三、 运行容器
运行容器: -i 表示让容器的标准输入打开,-t表示分配一个伪终端,-d表示后台启动 [root@Docker ~]# docker run -itd centos bash b628807fbe4026bfb403d9c7ef0968aa01f285c0ba339e1fdccd159cdd0e0ed9 查看运行的容器(ps -a查看所有容器): [root@Docker ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b628807fbe40 centos "bash" 2 minutes ago Up 2 minutes festive_lederberg 进入容器: [root@Docker ~]# docker exec -it b628807fbe40 bash [root@b628807fbe40 /]# 使用容器: [root@b628807fbe40 /]# ifconfig //没有网络 bash: ifconfig: command not found [root@b628807fbe40 /]# yum install -y net-tools Failed to set locale, defaulting to C.UTF-8 CentOS-8 - AppStream 637 kB/s | 5.8 MB 00:09 CentOS-8 - Base 461 kB/s | 2.2 MB 00:04 CentOS-8 - Extras 13 kB/s | 8.1 kB 00:00 Dependencies resolved. Package Architecture Version Repository Size Installing: net-tools x86_64 2.0-0.51.20160912git.el8 BaseOS 323 k Transaction Summary Install 1 Package Total download size: 323 k Installed size: 1.0 M Downloading Packages: net-tools-2.0-0.51.20160912git.el8.x86_64.rpm 248 kB/s | 323 kB 00:01 Total 185 kB/s | 323 kB 00:01 warning: /var/cache/dnf/BaseOS-f6a80ba95cf937f2/packages/net-tools-2.0-0.51.20160912git.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY CentOS-8 - Base 1.6 MB/s | 1.6 kB 00:00 Importing GPG key 0x8483C65D: Userid : "CentOS (CentOS Official Signing Key) security@centos.org" Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D From : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial Key imported successfully Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : net-tools-2.0-0.51.20160912git.el8.x86_64 1/1 Running scriptlet: net-tools-2.0-0.51.20160912git.el8.x86_64 1/1 Verifying : net-tools-2.0-0.51.20160912git.el8.x86_64 1/1 Installed: net-tools-2.0-0.51.20160912git.el8.x86_64 Complete! [root@b628807fbe40 /]# ifconfig //网络已安装 eth0: flags=4163 mtu 1500 inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255 ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet) RX packets 6188 bytes 9218989 (8.7 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 6192 bytes 458478 (447.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 1000 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@b628807fbe40 /]# uname -a //和宿主机一样 Linux b628807fbe40 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Docker网络:
[root@b628807fbe40 /]# ping 114.114.114.114
PING 114.114.114.114 (114.114.114.114) 56(84) bytes of data.
64 bytes from 114.114.114.114: icmp_seq=1 ttl=65 time=1.08 ms
^C
--- 114.114.114.114 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.075/1.075/1.075/0.000 ms
[root@Docker ~]# ifconfig
docker0: flags=4163 mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:1dff:fe79:7ac0 prefixlen 64 scopeid 0x20
ether 02:42:1d:79:7a:c0 txqueuelen 0 (Ethernet)
RX packets 6194 bytes 371902 (363.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6182 bytes 9218481 (8.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# 容器桥接到Docker0网卡:
veth3341691: flags=4163 mtu 1500
inet6 fe80::c80c:6dff:feac:b6ad prefixlen 64 scopeid 0x20
ether ca:0c:6d:ac:b6:ad txqueuelen 0 (Ethernet)
RX packets 6194 bytes 458618 (447.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6190 bytes 9219129 (8.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
再次进入容器及停止容器:
[root@Docker ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b628807fbe40 centos "bash" 2 hours ago Up 2 hours festive_lederberg [root@Docker ~]# docker exec -it festive_lederberg bash [root@b628807fbe40 /]# exit exit [root@Docker ~]# docker stop festive_lederberg festive_lederberg [root@Docker ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@Docker ~]# docker ps -a //可以查看到退出的容器 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b628807fbe40 centos "bash" 2 hours ago Exited (0) 2 minutes ago festive_lederberg [root@Docker ~]# docker start festive_lederberg festive_lederberg [root@Docker ~]# docker exec -it festive_lederberg bash
删除容器:
[root@Docker ~]# docker rm b628807fbe40 Error response from daemon: You cannot remove a running container b628807fbe4026bfb403d9c7ef0968aa01f285c0ba339e1fdccd159cdd0e0ed9. Stop the container before attempting removal or force remove [root@Docker ~]# docker rm -f b628807fbe40 //强行删除容器 b628807fbe40 [root@Docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
命名创建容器:
[root@Docker ~]# docker run --name leon_centos -idt centos 52a3b4e00eac0d764074eb0dfbd4c359fe8bb40ffb2d9f152566080cdb1d53fc [root@Docker ~]# [root@Docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 52a3b4e00eac centos "/bin/bash" 8 seconds ago Up 6 seconds leon_centos [root@Docker ~]# docker exec -it leon_centos bash [root@52a3b4e00eac /]#
创建新的容器(快照):
[root@Docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
52a3b4e00eac centos "/bin/bash" 2 minutes ago Up 2 minutes leon_centos
[root@Docker ~]# docker commit -m 'install net-tools' -a 'leon' leon_centos centos_installed_net-tools
sha256:126143b509649cf2b60f88b9465c0ff2d3a01e7a5c3e3e2f3a4dd3075e29ebc7
[root@Docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_installed_net-tools latest 126143b50964 11 seconds ago 246MB
centos latest 0d120b6ccaa8 2 months ago 215MB
使用此镜像运行该容器:
[root@Docker ~]# docker run --name new_centos -idt centos_installed_net-tools
7d8f1a6144d11a77e1a9912e2a1cd254fa9ec3d01306ef74ac1e04c7e7e34f2c
[root@Docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7d8f1a6144d1 centos_installed_net-tools "/bin/bash" 6 seconds ago Up 4 seconds new_centos
52a3b4e00eac centos "/bin/bash" 41 minutes ago Up 41 minutes leon_centos
进入容器:
[root@Docker ~]# docker exec -it new_centos bash
[root@7d8f1a6144d1 /]# ifconfig //天生net-tools
eth0: flags=4163 mtu 1500
inet 172.17.0.3 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:03 txqueuelen 0 (Ethernet)
RX packets 8 bytes 648 (648.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@7d8f1a6144d1 /]# ping 114.114.114.114
PING 114.114.114.114 (114.114.114.114) 56(84) bytes of data.
64 bytes from 114.114.114.114: icmp_seq=1 ttl=79 time=1.14 ms
64 bytes from 114.114.114.114: icmp_seq=2 ttl=86 time=1.07 ms
^C
--- 114.114.114.114 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 2ms
rtt min/avg/max/mdev = 1.072/1.103/1.135/0.045 ms
[root@7d8f1a6144d1 /]# ping 172.17.0.2 //另一个在运行的容器IP
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.149 ms
^C
--- 172.17.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.149/0.149/0.149/0.000 ms
导出容器:
[root@Docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7d8f1a6144d1 centos_installed_net-tools "/bin/bash" 5 minutes ago Up 5 minutes new_centos
52a3b4e00eac centos "/bin/bash" 46 minutes ago Up 46 minutes leon_centos
[root@Docker ~]# docker export -o centos_installed_net-tools.tar new_centos{也可以是容器ID}
[root@Docker ~]# ls
anaconda-ks.cfg install.sh.1 lnmp1.5.tar.gz mysql-data-dir-backup20200629220120 zabbix-2.2.10.tar.gz
centos_installed_net-tools.tar lnmp1.5 lnmp-install.log zabbix-2.2.10 zabbix.sh
导入容器:
[root@Docker ~]# docker stop 7d8f1a6144d1 7d8f1a6144d1 [root@Docker ~]# docker stop 52a3b4e00eac 52a3b4e00eac [root@Docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7d8f1a6144d1 centos_installed_net-tools "/bin/bash" 9 minutes ago Exited (0) 12 seconds ago new_centos 52a3b4e00eac centos "/bin/bash" 50 minutes ago Exited (0) 4 seconds ago leon_centos [root@Docker ~]# [root@Docker ~]# docker rm 7d8f1a6144d1 7d8f1a6144d1 [root@Docker ~]# docker rm 52a3b4e00eac 52a3b4e00eac [root@Docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@Docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos_installed_net-tools latest 126143b50964 47 minutes ago 246MB centos latest 0d120b6ccaa8 2 months ago 215MB [root@Docker ~]# docker rmi centos_installed_net-tools Untagged: centos_installed_net-tools:latest Deleted: sha256:126143b509649cf2b60f88b9465c0ff2d3a01e7a5c3e3e2f3a4dd3075e29ebc7 Deleted: sha256:ec297815fd5ee93f31067d7885ff2fac2fd2e276b4c6c4c2151320c46f767c98 [root@Docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 0d120b6ccaa8 2 months ago 215MB 导入容器: [root@Docker ~]# docker import centos_installed_net-tools.tar centos_installed_net-tools sha256:bb32efa808bd0df8859314d99462e97025b5af4e6d72f399ec5df49417595581 [root@Docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos_installed_net-tools latest bb32efa808bd 5 seconds ago 236MB centos latest 0d120b6ccaa8 2 months ago 215MB 运行导入的容器: [root@Docker ~]# docker run --name leon_centos -idt centos_installed_net-tools bash 805c9919066dac92c37234d5711fa2801c08ed5161e351b60263536d1d79ce2e [root@Docker ~]# [root@Docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 805c9919066d centos_installed_net-tools "bash" 11 seconds ago Up 9 seconds leon_centos 进入导入的容器: [root@Docker ~]# docker exec -it 805c9919066d bash [root@805c9919066d /]#
四、 Docker仓库管理
[root@Docker ~]# docker pull registry
[root@Docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_installed_net-tools latest bb32efa808bd 15 minutes ago 236MB
centos latest 0d120b6ccaa8 2 months ago 215MB
registry latest 2d4f4b5309b1 4 months ago 26.2MB
[root@Docker ~]# docker run -d -p 5000:5000 registry
ce6ef5f79d6e81eb30c24da904bd4d63f9a386999fde96ed6581b178a6e11828
[root@Docker ~]# curl 127.0.0.1:5000/v2/_catalog
{"repositories":[]}
[root@Docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_installed_net-tools latest bb32efa808bd 18 minutes ago 236MB
centos latest 0d120b6ccaa8 2 months ago 215MB
registry latest 2d4f4b5309b1 4 months ago 26.2MB
[root@Docker ~]# docker tag centos_installed_net-tools 172.26.132.240:5000/leon_centos //IP地址为宿主机的IP地址,端口号为容器仓库映射端口号
[root@Docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
172.26.132.240:5000/leon_centos latest bb32efa808bd 19 minutes ago 236MB
centos_installed_net-tools latest bb32efa808bd 19 minutes ago 236MB
centos latest 0d120b6ccaa8 2 months ago 215MB
registry latest 2d4f4b5309b1 4 months ago 26.2MB
修改私有仓库配置文件:
[root@Docker ~]# vim /etc/docker/daemon.json
{
"insecure-registries":["172.26.132.240:5000"]
}
之前运行的容器会停止,重新启动容器:
[root@Docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ce6ef5f79d6e registry "/entrypoint.sh /etc…" 9 minutes ago Exited (2) About a minute ago elastic_hodgkin [root@Docker ~]# docker start ce6ef5f79d6e ce6ef5f79d6e
推送镜像到仓库:
[root@Docker ~]# docker push 172.26.132.240:5000/leon_centos
The push refers to repository [172.26.132.240:5000/leon_centos]
f5fc2dcc3dc9: Pushed
latest: digest: sha256:d164f0fab01b70b9f1075b3d0fc6694518ed85d8d47bb466a3be4ee70236cbad size: 528
[root@Docker ~]# curl 127.0.0.1:5000/v2/_catalog
{"repositories":["leon_centos"]}
其它宿主机可以pull该仓库镜像:
[root@Docker ~]# docker push 172.26.132.240:5000/leon_centos
五、 Docker数据管理
Docker操作数据无法保存保存在宿主机硬盘内:
[root@d238e359604b /]# uname -a Linux d238e359604b 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux [root@d238e359604b /]# ls bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var [root@d238e359604b /]# mkdir /data [root@d238e359604b /]# cd /data [root@d238e359604b data]# ls [root@d238e359604b data]# vi leon.txt [root@d238e359604b data]# ls leon.txt [root@d238e359604b data]# cat leon.txt test [root@d238e359604b data]# exit 宿主机: [root@Docker ~]# ls / bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
重启并不会丢失: [root@Docker ~]# docker stop d238e359604b d238e359604b [root@Docker ~]# docker start d238e359604b d238e359604b [root@Docker ~]# docker exec -it leon_centos bash [root@d238e359604b /]# ls bin data dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var [root@d238e359604b /]# cat /data/leon.txt test 删除该容器: [root@Docker ~]# docker stop d238e359604b d238e359604b [root@Docker ~]# docker rm d238e359604b d238e359604b 重新启动并进入该容器文件丢失: [root@Docker ~]# docker run --name leon_centos -idt centos_installed_net-tools bash c5084513b07e57297d29f113ad42eabe503c46a8f3f17611d4e6a22b6363bf3c [root@Docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c5084513b07e centos_installed_net-tools "bash" 8 seconds ago Up 6 seconds leon_centos ce6ef5f79d6e registry "/entrypoint.sh /etc…" 24 minutes ago Up 14 minutes 0.0.0.0:5000->5000/tcp elastic_hodgkin [root@Docker ~]# docker exec -it leon_centos bash [root@c5084513b07e /]# ls bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
挂在本地目录到容器:
[root@Docker ~]# docker rm -f c5084513b07e c5084513b07e 使用-v指定挂载目录,映射本地目录/leon_data到容器目录/data [root@Docker ~]# docker run --name leon_centos -idt -v /leon_data:/data centos_installed_net-tools bash c301fedfdd0cf725face92e43923a97d3f18b2391fd96d4b0ee759e1b41711d3 [root@Docker ~]# docker exec -it leon_centos bash [root@c301fedfdd0c /]# ls bin data dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var [root@c301fedfdd0c /]# cd data/ [root@c301fedfdd0c data]# ls [root@c301fedfdd0c data]# vi leon.txt [root@c301fedfdd0c data]# cat leon.txt test by leon! 宿主机已写入文件: [root@Docker /]# cat /leon_data/leon.txt test by leon!
创建数据卷容器:
创建名为sharevol_centos的容器,并将宿主机leon_data挂载到容器/data目录下: [root@Docker /]# docker run --name sharevol_centos -idt -v /leon_data:/data centos_installed_net-tools bash ede761a92f73127f71bed5d38efc959fda7a7be38f8b9a0ff811237493a7b13c [root@Docker /]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ede761a92f73 centos_installed_net-tools "bash" 2 minutes ago Up 2 minutes sharevol_centos ce6ef5f79d6e registry "/entrypoint.sh /etc…" 40 minutes ago Up 30 minutes 0.0.0.0:5000->5000/tcp elastic_hodgkin 进入容器: [root@Docker /]# docker exec -it sharevol_centos bash [root@ede761a92f73 /]# ls bin data dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var 查看容器内文件内容: [root@ede761a92f73 /]# cd data/ [root@ede761a92f73 data]# ls leon.txt [root@ede761a92f73 data]# cat leon.txt test by leon! 创建名为new_centos的容器,并挂载sharevol_centos中的卷: [root@Docker /]# docker run --name new_centos -itd --volumes-from sharevol_centos centos_installed_net-tools bash d30baf088f58d2bfac8279e961681a2f7bc461c7da21c976c3371a7c2a25d82f [root@Docker /]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d30baf088f58 centos_installed_net-tools "bash" 39 seconds ago Up 37 seconds new_centos ede761a92f73 centos_installed_net-tools "bash" 25 minutes ago Up 25 minutes sharevol_centos ce6ef5f79d6e registry "/entrypoint.sh /etc…" About an hour ago Up 53 minutes 0.0.0.0:5000->5000/tcp elastic_hodgkin [root@Docker /]# docker exec -it new_centos bash 查看挂载目录: [root@d30baf088f58 /]# ls bin data dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var [root@d30baf088f58 /]# cd data/ [root@d30baf088f58 data]# ls leon.txt [root@d30baf088f58 data]# cat leon.txt test by leon!
六、 Docker网络


下载apache镜像: [root@Docker /]# docker pull httpd Using default tag: latest latest: Pulling from library/httpd bb79b6b2107f: Pull complete 26694ef5449a: Pull complete 7b85101950dd: Pull complete da919f2696f2: Pull complete 3ae86ea9f1b9: Pull complete Digest: sha256:b82fb56847fcbcca9f8f162a3232acb4a302af96b1b2af1c4c3ac45ef0c9b968 Status: Downloaded newer image for httpd:latest docker.io/library/httpd:latest [root@Docker /]# [root@Docker /]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 172.26.132.240:5000/leon_centos latest bb32efa808bd 2 hours ago 236MB centos_installed_net-tools latest bb32efa808bd 2 hours ago 236MB httpd latest 3dd970e6b110 2 weeks ago 138MB centos latest 0d120b6ccaa8 2 months ago 215MB registry latest 2d4f4b5309b1 4 months ago 26.2MB 启动apache镜像为80端口(80:80,前为宿主机端口,后为容器端口): [root@Docker /]# docker run -itd -p 80:80 httpd bash b8100cec5c9357c9e3d2b3d7e7974225ade3cc144e2244a1d0d28de44db6a83d [root@Docker /]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b8100cec5c93 httpd "bash" About a minute ago Up About a minute 0.0.0.0:80->80/tcp happy_nobel d30baf088f58 centos_installed_net-tools "bash" About an hour ago Up About an hour new_centos ede761a92f73 centos_installed_net-tools "bash" 2 hours ago Up 2 hours sharevol_centos ce6ef5f79d6e registry "/entrypoint.sh /etc…" 2 hours ago Up 2 hours 0.0.0.0:5000->5000/tcp elastic_hodgkin # 进入apache容器并启用服务: [root@Docker /]# docker exec -it b8100cec5c93 bash root@b8100cec5c93:/usr/local/apache2# root@b8100cec5c93:/usr/local/apache2# httpd -k start AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.5. Set the 'ServerName' directive globally to suppress this message

Host模式(直接使用宿主机端口)

[root@Docker /]# docker rm -f b8100cec5c93 b8100cec5c93 [root@Docker /]# docker run -idt --net=host httpd bash 527f9b1eec8a1cef759dfc06365b0ffdb0cdee68343645681655ff12dcdce7ce [root@Docker /]# [root@Docker /]# docker exec -it 527f9b1ee bash root@Docker:/usr/local/apache2# root@Docker:/usr/local/apache2# httpd -k start AH00557: httpd: apr_sockaddr_info_get() failed for Docker AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message


容器new_centos配置:
[root@Docker /]# docker exec -it d30baf088f58 bash
[root@d30baf088f58 /]# ifconfig
eth0: flags=4163 mtu 1500
inet 172.17.0.4 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:04 txqueuelen 0 (Ethernet)
RX packets 9 bytes 690 (690.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@d30baf088f58 /]# exit
exit
运行容器new_centos_cont,网络与new_centos相同:
[root@Docker /]# docker run --name new_centos_cont -itd --net=container:d30baf088f58 centos_installed_net-tools bash
e69ee83d4336c337a3b80197b612766deb92736e36d47278f0bd28a048e9f304
[root@Docker /]#
[root@Docker /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e69ee83d4336 centos_installed_net-tools "bash" 5 seconds ago Up 4 seconds new_centos_cont
d30baf088f58 centos_installed_net-tools "bash" 2 hours ago Up 2 hours new_centos
ede761a92f73 centos_installed_net-tools "bash" 2 hours ago Up 2 hours sharevol_centos
ce6ef5f79d6e registry "/entrypoint.sh /etc…" 3 hours ago Up 3 hours 0.0.0.0:5000->5000/tcp elastic_hodgkin
进入docker new_centos_cont:
[root@Docker /]# docker exec -it e69ee83d4336 bash
[root@d30baf088f58 /]# ifconfig
eth0: flags=4163 mtu 1500
inet 172.17.0.4 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:04 txqueuelen 0 (Ethernet)
RX packets 9 bytes 690 (690.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@d30baf088f58 /]#



[root@Docker ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
BOOTPROTO=none
IPADDR=172.26.132.240
NETMASK=255.255.255.0
GATEWAY=172.26.132.1
DNS1=172.20.3.44
DNS2=172.20.3.45
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
#IPV6INIT=yes
#IPV6_AUTOCONF=yes
NAME=br0
DEVICE=br0
ONBOOT=yes
#check_link_down() {
#return 1;
#}
[root@Docker ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BRIDGE=br0
BOOTPROTO=none
#IPADDR=172.26.132.240
#NETMASK=255.255.255.0
#GATEWAY=172.26.132.1
#DNS1=172.20.3.44
#DNS2=172.20.3.45
#PEERDNS=no
IPV4_FAILURE_FATAL=no
#USERCTL=no
#IPV6INIT=yes
#IPV6_AUTOCONF=yes
NAME=ens160
DEVICE=ens160
ONBOOT=yes
#check_link_down() {
#return 1;
#}
[root@Docker ~]# docker run -itd --net=none --name bridge centos_installed_net-tools bash
[root@Docker ~]# pipework br0 bridge 172.26.132.243/24@172.26.132.1
[root@Docker ~]# docker exec -it bridge bash
[root@13904b8dae8d /]# ifconfig
eth1: flags=4163 mtu 1500
inet 172.26.132.243 netmask 255.255.255.0 broadcast 172.26.132.255
ether 46:3f:56:de:fb:0e txqueuelen 1000 (Ethernet)
RX packets 99 bytes 6755 (6.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1 bytes 42 (42.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@13904b8dae8d /]# ping 172.26.132.1
PING 172.26.132.1 (172.26.132.1) 56(84) bytes of data.
64 bytes from 172.26.132.1: icmp_seq=1 ttl=255 time=4.15 ms
64 bytes from 172.26.132.1: icmp_seq=2 ttl=255 time=34.7 ms
64 bytes from 172.26.132.1: icmp_seq=3 ttl=255 time=3.02 ms
