docker集装箱之间共享卷

嗨,我使用docker部署一些服务,在这里我想共享不同docker集装箱之间的docker卷。

假设我有一个docker container A,它在/ data上挂载一个卷。 这是A的Dockerfile

VOLUME /data 

从我的理解,这将附加到容器的卷,但它不会挂载到容器的主机目录。 所以本卷内的数据仍然在容器A内

我有另一个容器B提供了一个FTP服务。 它访问量/公众下的数据。 B的Dockerfile是

 VOLUME /public 

现在我想把它们连接在一起,以便我可以用B来pipe理A的数据。 从--volumes-from文档https://docs.docker.com/engine/userguide/containers/dockervolumes/我将使用--volumes-from标志将A的数据卷挂载到B.但是这个命令会把A的数据挂载到/data中B而不是/public ,在这种情况下,容器B不能访问数据。 我没有看到任何方式来重命名挂载点。

任何build议或最佳做法来处理这种情况?

非常感谢!

================================================== ==

数据专用容器为这种情况提供了一个很好的解决scheme。 但是,如果你想使用卷,并将数据安装到不同的挂载点,这个问题可能会有所帮助! 如何映射使用Docker的卷path–volumes-from?

您可能会发现很多指向仅提供数据容器和–volumes-from的指针。 然而,自从docker1.9以来,数量已经成为一等公民,他们可以有名字,并有更大的灵活性:

现在很容易实现你想要的行为,这里是一个例子:

1 /创build名为“service-data”的命名数据卷

 docker volume create --name service-data 

2 /然后可以创build一个容器,通过使用-v标志将其装载到/ public文件夹中

 docker run -t -i -v service-data:/public debian:jessie /bin/bash 

为了testing目的,我们在映射的文件夹中创build一个小文本文件:

 cd public echo 'hello' > 'hello.txt' 

3 /您可以将您的命名卷附加到第二个容器,但这次在数据文件夹下:

 docker run -t -i -v service-data:/data debian:jessie /bin/bash ls /data #-->shows "hello.txt" 

请记住,如果两个容器都使用不同的图像,请注意所有权和权限!