之前的文章中说到挂载目录和文件:https://securityer.lofter.com/post/1d0f3ee7_91d86d8
数据卷容器
如果有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器.
数据卷容器其实就是一个正常的容器,专门用来提供数据卷供其他容器挂载.
首先,创建一个全名的数据卷容器dbdata:
┌─[root@parrot]─[~]
└──╼ #docker run -d -v /dbdata --name dbdata centos
fc701c8d3473374523b5bc753aba82506cf63709f088004f5a5b58b43339af81
在其他容器中使用 --volumes-from 来挂载 dbdata容器中的数据卷
┌─[root@parrot]─[~]
└──╼ #docker run -d --volumes-from dbdata --name db1 mongo
958f51535f440b43a0a1aabb0e5a8785c70c6f1f12cff0728785a06bde596224
┌─[root@parrot]─[~]
└──╼ #docker run -d --volumes-from dbdata --name db2 mongo
9b6209505a5703cb4cf55a288e5162833eec656cc45b0fcef0be050c0c04dffe
还可以使用多个 --volumes-from 参数来从多个容器挂载多个数据卷.也可以从其他已经挂载了的数据卷的容器来挂载数据卷.
┌─[root@parrot]─[~]
└──╼ #docker run -d --name db3 --volumes-from db1 mongo
3de7757f9ec578b5435007b3abc75e0f5b318f672bc7fa6efdc7e1c2b66d600c
验证挂载状态
┌─[root@parrot]─[~]
└──╼ #docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9b6209505a57 mongo:latest "/entrypoint.sh mong 8 minutes ago Up 8 minutes 27017/tcp db2
958f51535f44 mongo:latest "/entrypoint.sh mong 8 minutes ago Up 8 minutes 27017/tcp db1
┌─[root@parrot]─[~]
└──╼ #docker-enter db2
root@9b6209505a57:~# ls /
bin data dev etc lib media opt root sbin srv tmpvar
boot dbdata entrypoint.sh home lib64 mnt proc run selinux sys usr
*注意* 使用 --volumes-from 参数所挂载数据卷的容器自己并不需要保持在运行状态.
如果删除了挂载的容器(包括 dbdata,db1和db2),数据卷并不会被自动删除.如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时使用 docker rm -v 命令来指定同时删除关联的容器.这可以让用户在容器之间升级和移动数据卷.具体操作后续讲解......
© 走过岁月...... | Powered by LOFTER