bind mount共享数据 创建一个共享页面目录 1 2 [root@localhost ~]# mkdir htdocs/ [root@localhost ~]# echo "hello" > htdocs/index.html
然后进行bind mount的方式共享数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [root@localhost ~]# docker run -d -p 80 --name web0 --volume /root/htdocs/:/usr/local/apahce2/htdocs httpd 2ac16608128f2ac9462cbded6b0a92b1c210d9c34d7a56278b3b4f6e64e400d9 [root@localhost ~]# docker run -d -p 80 --name web1 --volume /root/htdocs/:/usr/local/apahce2/htdocs httpd 5f2f8214a377541f2c35512bdd241c43d356e32a052bc6a9d683124412b77ea2 [root@localhost ~]# docker run -d -p 80 --name web2 --volume /root/htdocs/:/usr/local/apahce2/htdocs httpd a51b1477241634d0f66e51c4a7d3d6595128cc30f98c4c70732ed60e6fd92cc8 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a51b14772416 httpd "httpd-foreground" 9 seconds ago Up 8 seconds 0.0.0.0:32770->80/tcp web2 5f2f8214a377 httpd "httpd-foreground" 14 seconds ago Up 14 seconds 0.0.0.0:32769->80/tcp web1 2ac16608128f httpd "httpd-foreground" 25 seconds ago Up 24 seconds 0.0.0.0:32768->80/tcp web0 # 分别访问不同容器映射到主机的端口 [root@localhost ~]# curl 172.16.1.16:32770 hello [root@localhost ~]# curl 172.16.1.16:32769 hello [root@localhost ~]# curl 172.16.1.16:32768 hello
卷容器共享数据
volume container:专门为其他容器提供volume的容器 volume container既可以通过bind mount共享数据库,也可以通过manage volume来共享数据
创建一个卷容器 1 2 3 [root@localhost ~]# docker create --name vc_data --volume /root/htdocs/:/usr/local/apache2/htdocs \ --volume test:/usr/local/apache2/logs busybox 139ec94bf4cc9dc9198e831ac4ff6e39b166d38c7bda2b3993a35130e59ab975
--volume /root/htdocs/:/usr/local/apache2/htdocs:将本地的htdocs目录以bind mount方式挂载到容器中的htdocs目录中--volume test:/usr/local/apache2/logs:将容器中的logs目录以manage volume的方式映射到物理机本地,volume 名为test
1 2 3 4 5 6 [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 139ec94bf4cc busybox "sh" 4 minutes ago Created vc_data a51b14772416 httpd "httpd-foreground" 11 minutes ago Up 11 minutes 0.0.0.0:32770->80/tcp web2 5f2f8214a377 httpd "httpd-foreground" 11 minutes ago Up 11 minutes 0.0.0.0:32769->80/tcp web1 2ac16608128f httpd "httpd-foreground" 12 minutes ago Up 12 minutes 0.0.0.0:32768->80/tcp web0
查看卷列表 1 2 3 [root@localhost ~]# docker volume ls DRIVER VOLUME NAME local test
查看卷容器的挂载信息 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [root@localhost ~]# docker inspect vc_data # 找到以下关键信息 "Mounts": [ { "Type": "bind", # bind mount 共享数据 "Source": "/root/htdocs", "Destination": "/usr/local/apache2/htdocs", "Mode": "", "RW": true, "Propagation": "rprivate" }, { "Type": "volume", # manage volume共享数据 "Name": "test", "Source": "/var/lib/docker/volumes/test/_data", "Destination": "/usr/local/apache2/logs", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" } ],
使用卷容器连接其他容器 1 2 3 4 5 6 7 8 9 10 11 12 [root@localhost ~]# docker run -d -p 80 --volumes-from vc_data --name web3 httpd 0e352478964ac86658db8e72f796bd188f2f269dbdaf41f69816df94c06ee0b7 [root@localhost ~]# docker run -d -p 80 --volumes-from vc_data --name web4 httpd e966b5860bfd9f063e541791adaeef59b01f4c5595ff7462d5cad3d8ccb1e6bd [root@localhost ~]# docker run -d -p 80 --volumes-from vc_data --name web5 httpd 390ac7c88206d4c56c1c4dcc7ac9ecda877fcc0587920fe25ffc15a39ef59efc [root@localhost ~]# docker ps PORTS NAMES 0.0.0.0:32773->80/tcp web5 0.0.0.0:32772->80/tcp web4 0.0.0.0:32771->80/tcp web3
访问 1 2 3 4 5 6 [root@localhost ~]# curl 172.16.1.16:32771 hello [root@localhost ~]# curl 172.16.1.16:32772 hello [root@localhost ~]# curl 172.16.1.16:32773 hello