Docker容器数据卷操作 [续]

之前的文章中说到挂载目录和文件:https://securityer.lofter.com/post/1d0f3ee7_91d86d8

数据卷容器

如果有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器.

数据卷容器其实就是一个正常的容器,专门用来提供数据卷供其他容器挂载.

  1. 首先,创建一个全名的数据卷容器dbdata:

    ┌─[root@parrot]─[~]

    └──╼ #docker run -d -v /dbdata --name dbdata centos

    fc701c8d3473374523b5bc753aba82506cf63709f088004f5a5b58b43339af81

  2. 在其他容器中使用 --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

  3. 还可以使用多个 --volumes-from 参数来从多个容器挂载多个数据卷.也可以从其他已经挂载了的数据卷的容器来挂载数据卷.

    ┌─[root@parrot]─[~]

    └──╼ #docker run -d --name db3 --volumes-from db1 mongo

    3de7757f9ec578b5435007b3abc75e0f5b318f672bc7fa6efdc7e1c2b66d600c

  4. 验证挂载状态

    ┌─[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 命令来指定同时删除关联的容器.这可以让用户在容器之间升级和移动数据卷.具体操作后续讲解......


评论
热度(1)

© 走过岁月...... | Powered by LOFTER