Montare più volumi su un contenitore finestra mobile?


152

So di poter montare una directory nel mio host sul mio container usando qualcosa del genere

docker run -t -i -v '/on/my/host:/on/the/container' ubuntu /bin/bash

C'è un modo per creare più di una coppia host-container? ad esempio un elenco separato da virgole o passare in un array?


poiché capisco lo stato attuale dei termini relativi ai documenti, non è possibile montare un volume (titolo della domanda), è sicuramente possibile avere molti attacchi di associazione per le cartelle host (questo è ciò che viene richiesto nel corpo della domanda)
Alexei Martianov

Risposte:


260

Passa più -vargomenti.

Per esempio:

docker -v /on/my/host/1:/on/the/container/1 \
       -v /on/my/host/2:/on/the/container/2 \
       ...

2
Okay, lo sto facendo esattamente allo stesso modo, ma quando provo a chiamare il secondo dice che non è stato trovato.
Mom

docker run -v / home / usr / workspace / proj / WebContent / file / nome utente: / mycode -v / home / usr / area di lavoro / proj / WebContent / file: / tst gcc: 4.9 sh -c 'cd mycode; gcc -o myapp ./mycode.c; cd tst; ./myapp <./test.txt 'Questo è il mio comando, sto provando a compilare il mycode.c che si trova nel primo volume, ma conferisco allo stesso file uno stdin da un altro volume. Come lo faccio?
Mom

1
@YehCheez, suggerirei (fortemente) di aprirlo come una domanda separata e di provare a costruire un riproduttore. (Se potessi riprogrammare il bug con un'immagine Docker nel registro pubblico e creare tutte le dipendenze locali nello script fornito nella domanda, sarebbe l'ideale).
Charles Duffy,

Ha sempre bisogno di percorsi assoluti?
xatzistnr,

3
La destinazione deve essere sempre assoluta. La fonte deve essere un percorso assoluto o l'identificatore per un volume con nome - vedere docs.docker.com/engine/admin/volumes/volumes per i documenti su quest'ultimo.
Charles Duffy,

19

Docker ora consiglia di migrare verso l'utilizzo --mount.

I montaggi di più volumi sono inoltre spiegati in dettaglio nella documentazione corrente di Docker.

Da: https://docs.docker.com/storage/bind-mounts/

$ docker run -d \
  -it \
  --name devtest \
  --mount type=bind,source="$(pwd)"/target,target=/app \
  --mount type=bind,source="$(pwd)"/target,target=/app2,readonly,bind-propagation=rslave \
  nginx:latest

La risposta originale più vecchia dovrebbe ancora funzionare; sto solo cercando di mantenere la risposta allineata all'attuale metodo più noto.


Vale la pena aggiungere l'unica ragione per cui Docker consiglia di migrare è perché la loro ricerca dimostra che il montaggio è più facile da usare e ha più opzioni. L'uso di -v o --mount va benissimo, dipende dalle tue preferenze e necessità personali.
KillerKode


6

Puoi avere Sola lettura o Lettura e scrittura solo sul volume

docker -v /on/my/host/1:/on/the/container/1:ro \

docker -v /on/my/host/2:/on/the/container/2:rw \

1
quale è l'opzione predefinita?
Hammad Dar,

-9

Oppure puoi farlo

docker run -v /var/volume1 -v /var/volume2 DATA busybox true

4
Questo non è ciò che l'OP sta cercando. Questo crea un volume all'interno del contenitore e non lo lega all'host.
Ioannis,

8
Hai ragione, dovresti essere: docker run -v / var / volume1: / container / volume1 -v / var / volume2: / container / volume2 DATA busybox true
Joost van der Laan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.