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?
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
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
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