web-dev-qa-db-ja.com

Docker:あるコンテナーから別のコンテナーにディレクトリをマウントする

2つのdockerイメージがあります。 Dockerイメージの1つ(最初のコンテナーから)を実行すると、いくつかのファイルが生成されますが、このファイルは別のコンテナーで使用する必要があります。

これはできますか?

21
Ganesh Satpute

Reneの答えは機能しますが、ホストのディレクトリ(container1 ==> container2)を使用せずにデータを共有できます。

docker run -v /data/myfolder --name container1 image-name-1
docker run --volumes-from container1 image-name-2
17

Oracleの2015年のWebサイトには例がありました(もう利用できません)。これに基づいて作成しました

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

データ画像と

Dockerfile

# Ubuntu image
FROM ubuntu:14.04

イメージが他のデータ専用ボリュームの使用をテストするために。

docker build -t bitplan/dataonly:0.0.1 -f Dockerfile.data . 
docker build -t bitplan/dataexample:0.0.1 .

これらのイメージを構築します

そしてそれらは両方とも私の画像リストに今表示されます:

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

実行とテストは

docker run -d --name html bitplan/dataonly:0.0.1
docker run --volumes-from html bitplan/dataexample:0.0.1 ls /var/www/html

を示しています:

0ebb78f209169fb7d281bb6b06851b33af7a98488c3a38cf25ac92fe983fff43
file1.html
file2.html
index.html
10
Wolfgang Fahl

とても簡単です。 1つのディレクトリを2つの異なるコンテナに共有し、そのディレクトリ内の同じデータに両方のアクセス権が必要です。

docker run -v myfolder:/data/myfolder image-name-1
docker run -v myfolder:/data/myfolder image-name-2
9
Rene M.