测试多个容器数据同步,下面是一个简单的拓扑图,帮助理解

绘图1

# 启动3个容器,镜像使用以前dockerfile自己构建的镜像,基于centos:6.6版本,镜像名为xuxiake/centos:1.0
[root@localhost ~]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
xuxiake/centos        1.0       4369a6ea5814   6 years ago     203MB

启动第一个容器

​
[root@localhost ~]# docker run -it --name xuxiake01 xuxiake/centos:1.0
[root@0c1599d6ec74 /]# ls
bin  etc   lib    lost+found  mnt  proc  sbin     srv  tmp  var       volume02
dev  home  lib64  media       opt  root  selinux  sys  usr  volume01
# 这里的 volume01 和 volume02 为数据卷

启动第二个容器

[root@localhost ~]# docker run -it --name xuxiake02 --volumes-from xuxiake01 xuxiake/centos:1.0
[root@4816b1f21a94 /]# ls
bin  etc   lib    lost+found  mnt  proc  sbin     srv  tmp  var       volume02
dev  home  lib64  media       opt  root  selinux  sys  usr  volume01

测试:在 xuxiake01 的 volume01中创建 xuxiake01 文件,然后在 xuxiake02 的 volume01 中查看

# 在 xuxiake01 中创建文件
[root@localhost ~]# docker exec -it xuxiake01 /bin/bash     # 进入xuxiake01
[root@0c1599d6ec74 /]# ls
bin  etc   lib    lost+found  mnt  proc  sbin     srv  tmp  var       volume02
dev  home  lib64  media       opt  root  selinux  sys  usr  volume01
[root@0c1599d6ec74 /]# cd volume01
[root@0c1599d6ec74 volume01]# touch xuxiake01       # 创建文件
​
# 在 xuxiake02 中查看
[root@4816b1f21a94 volume01]# pwd
/volume01
[root@4816b1f21a94 volume01]# ls
xuxiake01

创建 xuxiake03 容器,同时也挂载 xuxiake01 的数据卷,测试数据同步

[root@localhost ~]# docker run -it --name xuxiake03 --volumes-from xuxiake01 xuxiake/centos:1.0
[root@d10a177195d7 /]# ls
bin  etc   lib    lost+found  mnt  proc  sbin     srv  tmp  var       volume02
dev  home  lib64  media       opt  root  selinux  sys  usr  volume01
[root@d10a177195d7 /]# ls /volume01
xuxiake01

总结:通过 --volume-from 就可以实现容器间的数据共享

注意:容器之间的数据同步类似于双向拷贝,其中一个容器删除掉另一个容器的数据还在。

更多推荐