2015-10-19 6 views

risposta

6

È molto semplice. Devi condividere una directory in due contenitori diversi, quindi avere entrambi accesso agli stessi dati in quella directory.

docker run -v myfolder:/data/myfolder image-name-1 
docker run -v myfolder:/data/myfolder image-name-2 
+0

Grazie per la risposta. Ho un'applicazione in esecuzione all'interno di un contenitore che genererà alcuni file nella directory. La tua soluzione è host ==> container1 e host ==> container. Quello che voglio è container1 ==> container2 –

+1

@GaneshSatpute si dovrebbe andare con questa risposta e non condividere direttamente i dati tra due contenitori. Il trasferimento di file deve essere eseguito tramite un volume condiviso (l'host) o tramite un contenitore di volumi dedicato. Questa guida si tuffa nei volumi di docker: http://container-solutions.com/understanding-volumes-docker/ – michaelbahr

11

risposta di Rene funziona, ma si potrebbe condividere i dati senza utilizzare directory dell'host (container1 ==> container2):

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

Ciao @Manuel, grazie per la tua risposta. Potresti per favore elaborare come accedo a quei file all'interno di container2? –

+0

Solo un aggiornamento Manuel. Ho provato questo e questo funziona alla grande! Ma il problema sta montando nella stessa posizione del contenitore di origine. Posso montarlo ad un altro punto? –

+0

Salve, non è supportato, c'era [una proposta relativa a questo] (https://github.com/docker/docker/issues/11261) ma in questo momento non è possibile cambiare la posizione del punto di montaggio. –

5

https://docs.oracle.com/cd/E52668_01/E54669/html/section_ffp_yt4_gp.html

mostra un esempio. Sulla base di questo ho creato

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 

per l'immagine dei dati e

Dockerfile

# Ubuntu image 
FROM ubuntu:14.04 

per l'immagine per testare l'utilizzo dell'altro volume di soli dati.

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

costruisce queste immagini

ed entrambi Mostra nella mia lista immagini ora:

docker images | grep data 

[email protected]:~/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 

in esecuzione e il collaudo viene fatto con

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

che mostra:

0ebb78f209169fb7d281bb6b06851b33af7a98488c3a38cf25ac92fe983fff43 
file1.html 
file2.html 
index.html