web-dev-qa-db-fra.com

Docker: monter le répertoire d'un conteneur à un autre

J'ai deux images de docker. L'une des images du docker (du premier conteneur), lorsqu'elle est exécutée, génère certains fichiers, qui doivent être consommés par un autre conteneur.

Puis-je faire ceci?

21
Ganesh Satpute

La réponse de René fonctionne, mais vous pouvez partager des données sans utiliser le répertoire de l'hôte (container1 ==> container2):

docker run -v /data/myfolder --name container1 image-name-1
docker run --volumes-from container1 image-name-2
17
Manuel J. Garrido

Oracle en avait un exemple sur son site Web en 2015 (qui n'est plus disponible). Sur cette base, j'ai créé

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

pour l'image de données et

Dockerfile

# Ubuntu image
FROM ubuntu:14.04

pour que l'image teste l'utilisation des autres volumes de données uniquement.

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

construit ces images

et ils apparaissent tous les deux dans ma liste d'images maintenant:

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

l'exécution et les tests sont effectués avec

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

qui montre:

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

C'est très simple. Vous devez partager un répertoire avec deux conteneurs différents, puis avoir tous les deux accès aux mêmes données dans ce répertoire.

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