多个容器之间实现数据共享。
2. 示例(1)启动父容器
[root@192 ~]# docker run -it --name centos01 dong/centos:1.0 [root@0829be13af68 /]# ls bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var volume1 volume2 [root@0829be13af68 /]#
注意:
dong/centos:1.0:假如容器设定了版本,启动的时候需要指定版本,否则会报错。
(2)启动子容器
使用命令:--volumes-from(实现容器间的数据共享)
[root@192 ~]# docker run -it --name centos02 --volumes-from centos01 dong/centos:1.0 [root@d2ae0ca7ca9c /]# ls bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var volume1 volume2 [root@d2ae0ca7ca9c /]#
(3)数据同步测试
在centos2的volume1下创建test文件,centos1的volume1下可实现文件同步。
(4)删掉父容器测试
删除父容器centos1
[root@192 ~]# docker ps -a ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d2ae0ca7ca9c dong/centos:1.0 "/bin/sh -c /bin/bash" 7 minutes ago Up 6 minutes centos02 0829be13af68 dong/centos:1.0 "/bin/sh -c /bin/bash" 9 minutes ago Exited (0) 30 seconds ago centos01 [root@192 ~]# docker rm -f 0829be13af68 0829be13af68 [root@192 ~]# docker ps -a ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d2ae0ca7ca9c dong/centos:1.0 "/bin/sh -c /bin/bash" 7 minutes ago Up 7 minutes centos02 [root@192 ~]#
查看子容器文件是否存在
[root@d2ae0ca7ca9c volume1]# ls test [root@d2ae0ca7ca9c volume1]#
发现子容器内的文件依然存在。
3. 数据库数据同步[root@192 mysql]# docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql1 mysql [root@192 mysql]# docker run -d -p 3311:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql2 --volumes-from mysql1 mysql
注意:
这里的映射的端口不能相同,否则会报错。
[root@192 ~]# docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql2 mysql [root@192 ~]# docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql3 --volumes-from mysql2 mysql docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql3 (2db8d849098df6205ca744ed209952b6dadb8abd3289b5e90b4c2d990ec42c65): Bind for 0.0.0.0:3310 failed: port is already allocated.



