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"
请记住,如果两个容器都使用不同的图像,请注意所有权和权限!