嗨,我正在使用Docker部署一些服务,在这里我想在不同的Docker容器之间共享Docker卷。
假设我有一个Docker容器A在/ data挂载了一个卷。这是A的Dockerfile
VOLUME /data
据我了解,这会将一个卷附加到容器,但不会将主机目录装载到该容器。因此,该卷内的数据仍位于容器A内。
我有另一个提供ftp服务的容器B。它访问卷/ public下的数据。B的Dockerfile是
VOLUME /public
现在,我想将它们链接在一起,以便可以使用B来管理A的数据。从docker doc https://docs.docker.com/engine/userguide/containers/dockervolumes/中,我将使用--volumes- from标志将A的数据量装载到B。但是此命令会将A的数据装载到/dataB中,而不是/public在这种情况下,容器B无法访问数据。我没有找到重命名安装点的任何方法。
--volumes- from
/data
/public
有什么建议或最佳做法来处理这种情况?
非常感谢!
================================================== ==
仅数据容器为这种情况提供了很好的解决方案。但是,如果您要使用volume-from并将数据装入到不同的装入点,则此问题可能会有所帮助! 如何使用Docker的–volumes-from映射卷路径?
您可能会发现很多指向仅数据容器和的指针--volumes-from。但是,从docker 1.9开始,卷已成为一等公民,它们可以具有名称,并且具有更大的灵活性:
--volumes-from
现在可以轻松实现所需的行为,这是一个示例:
创建一个名为name的命名数据卷service-data:
service-data
docker volume create --name service-data
然后,您可以使用以下-v标志创建一个将其装入/ public文件夹的容器:
-v
docker run -t -i -v service-data:/public debian:jessie /bin/bash
为了进行测试,我们在映射的文件夹中创建一个小的文本文件:
cd public echo 'hello' > 'hello.txt'
docker run -t -i -v service-data:/data debian:jessie /bin/bash
ls /data #–>shows “hello.txt”
请记住,如果两个容器都使用不同的图像,请小心所有权和权限!