[root@server1 ~]# docker run -d --name registry -p 5000:5000 registry:2
683706271b8f13781c0e4bfb83b3c2a73721215620dddd5ffddb4bd40597b8bf
此时inspect查看信息,会发现自己生成了一个长目录
此时就算将容器删除,但卷位置还存在
重新指定卷的位置并创建
[root@server1 ~]# docker run -d --name registry -p 5000:5000 -v /opt/registry:/var/lib/registry registry:2
5241c43e57e0326681edcf0886ae980fcee3e99eb5a1ad02c265c566fe9a73cd
再次删除,卷位置信息仍然存在
注意:如果挂载时,指向的是已经有的目录,原有的数据会被复制到volume
1.将本机已经有的文件挂载到新打开的容器里,以只读的方式
[root@server1 registry]# docker run -it --name vm1 -v /etc/yum.repos.d/yum.repo:/yum.repo:ro ubuntu
支持三种运行方式:devicemapper、NFS、EBS
此处介绍NFS
1.在server1上安装nfs-utils,开启rpcbind服务
[root@server1 ~]# yum install -y nfs-utils
[root@server1 ~]# systemctl start rpcbind
2.编辑贡献策略
[root@server1 ~]# vim /etc/exports
/mnt/nfs *(rw,no_root_squash)
3.开启nfs服务,创建共享目录
[root@server1 ~]# systemctl start nfs
[root@server1 ~]# mkdir /mnt/nfs
[root@server1 ~]# exportfs -rv
exporting *:/mnt/nfs
[root@server1 ~]# showmount -e
Export list for server1:
/mnt/nfs *
4.在server2上安装nfs-utils
[root@server2 ~]# yum install -y nfs-utils
[root@server2 ~]# systemctl start rpcbind
[root@server2 ~]# showmount -e server1
Export list for server1:
/mnt/nfs *
在启动时,出现此问题
此处,选择关闭后重新启动无效果,kill掉进程,重新启动,正常
5.进行挂载
[root@server2 ~]# mkdir /mnt/nfs
[root@server2 ~]# mount 172.25.254.1:/mnt/nfs/ /mnt/nfs/
[root@server1 ~]# tar zxf convoy.tar.gz
[root@server1 ~]# ls
auth certs convoy convoy.tar.gz images
[root@server1 ~]# cd convoy/
[root@server1 convoy]# ls
convoy convoy-pdata_tools SHA1SUMS
[root@server1 convoy]# mv convoy* /usr/local/bin/
[root@server1 convoy]# mkdir /etc/docker/plugins/
[root@server1 convoy]# cd /etc/docker/plugins/
[root@server1 plugins]# ls
[root@server1 plugins]# echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec
[root@server1 plugins]# cat /etc/docker/plugins/convoy.spec
unix:///var/run/convoy/convoy.sock
[root@server1 plugins]# ls
convoy.spec
[root@server1 plugins]# convoy daemon --drivers vfs --driver-opts vfs.path=/mnt/nfs &>/dev/null &
[root@server1 ~]# convoy create vol1
vol1
创建卷后会自动生成目录
此时在server2端也可以查看到
在server2端也安装convoy插件
[root@server2 ~]# tar zxf convoy.tar.gz
[root@server2 ~]# cd convoy/
[root@server2 convoy]# ls
convoy convoy-pdata_tools SHA1SUMS
[root@server2 convoy]# mv convoy* /usr/local/bin/
[root@server2 ~]# convoy daemon --drivers vfs --driver-opts vfs.path=/mnt/nfs &>/dev/null &
在server2端创建目录,将server1上的convoy.sock发送
[root@server2 ~]# mkdir /etc/docker/plugins
[root@server2 ~]# cd /etc/docker/plugins/
[root@server1 plugins]# scp convoy.spec server2:/etc/docker/plugins/
使用卷:
可以同时在两台机子同时运行容器,会发现数据目录中的数据是同步的
[root@server1 ~]# docker run -it --name vm1 -v vol1:/data --volume-driver=convoy ubuntu
root@214f6e10d973:/# cp /etc/* /data/
不关闭退出,此时在vol1目录下可以查看到:
在server2端也能同步到信息:
测试同步性:
在server1端将vm1连上,在server2端的vm1上,将信息作一些改变
[root@server1 ~]# docker attach vm1
在server2端删除一点信息
此时在server1端可以查看到
在server1端创建一些信息
在server2端查看