Docker:将目录从一个容器挂载到另一个容器

Gan*_*ute 21 docker dockerfile

我有两个码头图像.其中一个docker镜像(来自第一个容器)在运行时会生成一些文件,这些文件需要由另一个容器使用.

我可以这样做吗?

Man*_*ido 18

Rene的答案有效,但您可以在不使用主机目录(container1 ==> container2)的情况下共享数据:

docker run -v /data/myfolder --name container1 image-name-1
docker run --volumes-from container1 image-name-2
Run Code Online (Sandbox Code Playgroud)

  • 只是更新曼努埃尔。我尝试了一下,效果很好!但问题是它安装在与源容器相同的位置。我可以在其他时间安装它吗? (2认同)

Wol*_*ahl 10

甲骨文在2015年的网站上有一个例子(现在不再提供).基于此我创建

https://github.com/BITPlan/docker-stackoverflowanswers/tree/master/33232991

Dockerfile.data

# Dockerfile that modifies ubuntu to create a data volume container
FROM ubuntu:14.04
RUN mkdir -p /var/www/html
RUN echo "This is the content for file1.html" > /var/www/html/file1.html
RUN echo "This is the content for file2.html" > /var/www/html/file2.html
RUN echo "This is the content for index.html" > /var/www/html/index.html
VOLUME /var/www/html
ENTRYPOINT /usr/bin/tail -f /dev/null
Run Code Online (Sandbox Code Playgroud)

对于数据图像和

Dockerfile

# Ubuntu image
FROM ubuntu:14.04
Run Code Online (Sandbox Code Playgroud)

用于图像测试仅使用其他数据量.

docker build -t bitplan/dataonly:0.0.1 -f Dockerfile.data . 
docker build -t bitplan/dataexample:0.0.1 .
Run Code Online (Sandbox Code Playgroud)

构建这些图像

他们现在都在我的图片列表中显示:

docker images | grep data

wf@mars:~/source/docker/stackoverflow2>    docker images | grep data
bitplan/dataonly          0.0.1               aa6aeb923f55        9 minutes ago       188.4 MB
bitplan/dataexample       0.0.1               a005e6b7dd01        7 days ago          188.4 MB
Run Code Online (Sandbox Code Playgroud)

运行和测试完成

docker run -d --name html bitplan/dataonly:0.0.1
docker run --volumes-from html bitplan/dataexample:0.0.1 ls /var/www/html
Run Code Online (Sandbox Code Playgroud)

这表现了:

0ebb78f209169fb7d281bb6b06851b33af7a98488c3a38cf25ac92fe983fff43
file1.html
file2.html
index.html
Run Code Online (Sandbox Code Playgroud)


Ren*_* M. 9

这很简单.您必须将一个目录共享到两个不同的容器,然后同时访问该目录中的相同数据.

docker run -v myfolder:/data/myfolder image-name-1
docker run -v myfolder:/data/myfolder image-name-2
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的回答。我有一个在一个容器中运行的应用程序,它将在目录中生成一些文件。您的解决方案是host ==> container1和host ==> container。我想要的是container1 ==> container2 (6认同)