Ciò consente di eseguire comandi arbitrari all'interno di un contenitore esistente.
Naturalmente, qualsiasi comando si esegue deve esistere nel filesystem contenitore.
Nota - Questo copierà costruire directory in un contenitore di .../nginx/html/directory copiare solo i file presenti nella cartella:
I volumi sono memorizzati in una parte del filesystem host gestita da Docker (/ var/lib/docker/volumi/su Linux). I processi non Docker non dovrebbero modificare questa parte del filesystem. I volumi sono il modo migliore per mantenere i dati in Docker.
Quando si crea un volume, questo viene archiviato in una directory sull'host Docker. Quando si monta il volume in un contenitore, questa directory è ciò che viene montato nel contenitore. Questo è simile al modo in cui funzionano i bind mounts, tranne che i volumi sono gestiti da Docker e sono isolati dalle funzionalità di base della macchina host.
Un determinato volume può essere montato in più contenitori contemporaneamente. Quando nessun contenitore in esecuzione utilizza un volume, il volume è ancora disponibile su Docker e non viene rimosso automaticamente. È possibile rimuovere i volumi inutilizzati usando la potatura del volume della finestra mobile.
Quando si monta un volume, può essere denominato o anonimo. Ai volumi anonimi non viene assegnato un nome esplicito quando vengono montati per la prima volta in un contenitore, quindi Docker fornisce loro un nome casuale che è garantito essere univoco all'interno di un determinato host Docker. Oltre al nome, i volumi nominati e anonimi si comportano allo stesso modo.
I volumi supportano inoltre l'utilizzo di driver di volume, che consentono di archiviare i dati su host remoti o provider di servizi cloud, tra le altre possibilità.
I supporti di binding possono essere memorizzati in qualsiasi punto del sistema host. Potrebbero anche essere file di sistema o directory importanti. I processi non Docker sull'host Docker o sul contenitore Docker possono modificarli in qualsiasi momento. Disponibile sin dai primi giorni di Docker. I supporti Bind hanno funzionalità limitate rispetto ai volumi. Quando si utilizza un'installazione bind, un file o una directory sul computer host viene montato in un contenitore. Il file o la directory sono referenziati dal suo percorso completo sul computer host. Il file o la directory non è necessario che esistano già sull'host Docker. Viene creato su richiesta se non esiste ancora. I mount bind sono molto performanti, ma si basano sul filesystem della macchina host con una struttura di directory specifica disponibile. Se stai sviluppando nuove applicazioni Docker, considera invece l'utilizzo di volumi denominati. Non è possibile utilizzare i comandi CLI di Docker per gestire direttamente i bind mounts.
Un effetto collaterale dell'uso di bind mounts, nel bene o nel male, è che è possibile modificare il file system host tramite processi in esecuzione in un contenitore, tra cui la creazione, la modifica o l'eliminazione di file o directory di sistema importanti. Questa è una potente abilità che può avere implicazioni sulla sicurezza, incluso l'impatto sui processi non Docker sul sistema host.
I supporti tmpfs sono memorizzati solo nella memoria del sistema host e non vengono mai scritti nel filesystem del sistema host.
Un supporto per tmpfs non viene mantenuto su disco, sull'host Docker o all'interno di un contenitore. Può essere utilizzato da un contenitore durante la vita del contenitore, per memorizzare informazioni non persistenti o sensibili. Ad esempio, internamente, i servizi di sciame usano i comandi tmpfs per montare i segreti nei contenitori di un servizio.
Se è necessario specificare le opzioni del driver del volume, è necessario utilizzare --mount. -v oppure --volume: costituito da tre campi, separati da caratteri dei due punti (:). I campi devono essere nell'ordine corretto e il significato di ciascun campo non è immediatamente evidente. o Nel caso di volumi denominati, il primo campo è il nome del volume ed è univoco su un determinato computer host. Per i volumi anonimi, il primo campo è omesso. o Il secondo campo è il percorso in cui il file o la directory verranno montati nel contenitore. o Il terzo campo è facoltativo ed è un elenco di opzioni separate da virgole, come ro. Queste opzioni sono discusse di seguito. • --mount: costituito da più coppie chiave-valore, separate da virgole e ciascuna composta da una tupla =. La sintassi --mount è più dettagliata di -v o --volume, ma l'ordine delle chiavi non è significativo e il valore della bandiera è più facile da capire. o Il tipo di mount, che può essere binding, volume o tmpfs. Questo argomento tratta i volumi, quindi il tipo sarà sempre il volume. o La fonte del supporto. Per i volumi denominati, questo è il nome del volume. Per i volumi anonimi, questo campo è omesso. Può essere specificato come sorgente o src. o La destinazione prende come valore il percorso in cui il file o la directory verranno montati nel contenitore. Può essere specificato come destinazione, dst o destinazione. o L'opzione di sola lettura, se presente, fa sì che il supporto di associazione sia montato nel contenitore in sola lettura. o L'opzione volume-opt, che può essere specificata più volte, accetta una coppia chiave-valore costituita dal nome dell'opzione e dal suo valore.
provare ad aggiungere al vostro 'corsa finestra mobile comando' montare il bind di' /var/run/docker.sock -v:/var/run/docker.sock' – user2915097
voglio dire senza installare finestra mobile dentro e senza correre finestra mobile interna perché equivale a fornire i privilegi sudo al contenitore interno all'host esterno. –
Non c'è davvero alcun modo all'interno di un contenitore per identificare i supporti del volume Docker (senza esporre l'accesso alla Docker api). – larsks