Docker挂载命名空间实现容器之间的共享。

4

如何利用容器的ID使用挂载名称空间来在退出原始容器后在其他容器中共享文件?

1个回答

2
这被称为数据卷容器:请参见“创建和挂载数据卷容器”。
$ docker create -v /dbdata --name dbdata training/postgres /bin/true
$ docker run -d --volumes-from dbdata --name db1 training/postgres
$ docker run -d --volumes-from dbdata --name db2 training/postgres

在这里,即使容器 db1 存在,db2 仍然可以访问共享卷 dbdatadbdata 是一个数据卷容器,您不需要"运行"它(其中没有任何进程在运行,只有一个数据的共享卷),您只需要"创建"它(也不需要"退出"它,因为您从未运行它)。

虽然我从容器退出,但我仍然可以利用该容器的挂载点来运行其他容器,通过利用该挂载点。这在内部是如何实现的呢? - Sowndarya K
@SowndaryaK,你没有退出数据容器。你正在其他容器中使用数据容器挂载点,然后退出。但是数据容器仍处于“已创建”状态:它从未“退出”。 - VonC
root@ubuntu:/# docker run -v /tmp:/tmp -ti ubuntu /bin/bash root@7eb6188873f9:/# cd /tmp root@7eb6188873f9:/tmp# ls VMwareDnD config-err-gnSLwW pp.txt s.txt unity_support_test.0 vmware-root vmware-sowndarya root@7eb6188873f9:/tmp# exit exit root@ubuntu:/# docker run --volumes-from=7eb6188873f9 -ti ubuntu /bin/bash root@b7e71c8c7df9:/# cd /tmp root@b7e71c8c7df9:/tmp# ls VMwareDnD config-err-gnSLwW pp.txt s.txt unity_support_test.0 vmware-root vmware-sowndarya - Sowndarya K
是的,我看到了,但我感到困惑的是为什么我仍然能够利用那个挂载点? - Sowndarya K
这可能是一个愚蠢的问题..对此很抱歉,Docker挂载命名空间的文件在主机上确切地挂载了哪个文件系统? - Sowndarya K
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接