GNU/Linux >> Linux Esercitazione >  >> Linux

20 utili esempi di comandi del volume Docker per gli sviluppatori moderni

Docker ha cambiato il modo in cui impacchettamo i nostri programmi sin dalla sua comparsa nel 2013. Consente agli sviluppatori di creare software all'avanguardia con dipendenze minime e rende l'implementazione più semplice che mai. Se sei un aspirante ingegnere del software che cerca di padroneggiare la piattaforma mobile, devi avere una buona conoscenza dei vari comandi del volume della finestra mobile. I volumi sono un meccanismo utilizzato da Docker per fornire un'archiviazione dei dati persistente. Forniscono vantaggi significativi in ​​termini di sviluppo e distribuzione del software. Oggi ci siamo presi il nostro tempo per insegnarti gli elementi costitutivi di base dei volumi di dati in Docker.

Esempi essenziali di comandi del volume Docker

Questa guida ti insegnerà le attuali metodologie utilizzate dagli sviluppatori per implementare l'archiviazione persistente dei dati in progetti commerciali e open source. Dopo aver completato questa guida, sarai in grado di creare i tuoi volumi di dati e accedervi senza sforzo dai tuoi contenitori Docker. Se sei un principiante assoluto, ti consigliamo di consultare la nostra guida sui comandi docker essenziali prima di lavorare con i volumi.

1. Creazione di volumi Docker

È molto facile creare volumi di dati in Docker. Dovrai usare il comando volume create del demone docker per farlo. Dai una rapida occhiata all'esempio seguente per vedere come funziona.

$ docker volume create testVolume

Questo comando crea un nome di volume di dati testVolume che può essere utilizzato da un container specifico o condiviso tra un cluster di container. Ora puoi montare questo volume in una posizione all'interno del contenitore. Una volta terminato, sarà molto facile archiviare o accedere ai dati del contenitore dal computer host.

2. Visualizzazione dei volumi disponibili

È comune che gli ambienti di sviluppo dispongano di un numero elevato di volumi di dati. Quindi, è fondamentale identificare i volumi specifici con cui stai lavorando. Fortunatamente, è molto facile elencare tutti i volumi di dati attualmente dichiarati utilizzando il sottocomando volume ls del daemon docker.

$ docker volume ls
- -

Otterrai un elenco di tutti i volumi Docker presenti nel tuo host eseguendo il comando sopra. Stampa i nomi dei volumi di dati e i rispettivi driver di volume. I volumi di dati sono archiviati in una porzione specifica del filesystem host, ovvero /var/lib/docker/volumes/ in Linux.

3. Ispezione dei volumi Docker

Il comando volume inspects del daemon docker fornisce informazioni essenziali su un particolare volume. Visualizza informazioni come il driver del volume, il punto di montaggio, l'ambito e le etichette. Il comando seguente lo dimostra usando un esempio pratico.

$ docker volume inspect testVolume

I dati risultanti mostrano che il nostro testVolume è montato nella posizione /var/lib/docker/volumes/testVolume/_data della nostra macchina host. Visualizza anche la data di creazione di queste informazioni e tutte le opzioni specificate. Semplifica la risoluzione dei problemi relativi ai volumi di dati per gli sviluppatori.

4. Eliminazione di volumi specifici

Se hai accumulato volumi di dati inutilizzati, è una buona idea rimuoverli. In questo modo puoi liberare spazio di archiviazione nell'ambiente host. L'esempio seguente illustra come eliminare un singolo volume utilizzando il relativo attributo name.

$ docker volume rm testVolume

È quindi possibile eliminare un determinato volume di dati utilizzando il sottocomando volume rm, seguito dal nome del volume. Restituirà il nome del volume eliminato nell'emulatore di terminale Linux come conferma.

5. Eliminazione di più volumi

Anche l'eliminazione di più volumi di dati è abbastanza semplice. Basta passare uno dopo l'altro il nome dei volumi che si desidera eliminare. Il comando seguente lo mostra in azione.

$ docker volume rm testVolume newVolume otherVolume

Questo comando rimuoverà i tre volumi di dati specificati. Tieni presente che non abbiamo creato nuovoVolume e altro volume . Sono stati utilizzati qui solo a scopo dimostrativo. Quindi, assicurati innanzitutto che i tuoi volumi di dati esistano prima di eliminarli.

6. Eliminazione di tutti i volumi

È sempre una buona idea eliminare i volumi di dati una volta che i contenitori sono stati spostati nell'ambiente di produzione dalla macchina di sviluppo. Fortunatamente, il demone Docker consente agli sviluppatori di rimuovere tutti i volumi Docker disponibili utilizzando un unico comando, come illustrato di seguito.

$ docker volume prune

Inoltre, questo comando volume Docker è grazioso, il che significa che non rimuoverà alcun volume utilizzato da un contenitore esistente. Pertanto, è molto sicuro da usare e aiuta a liberare lo spazio tanto necessario negli ambienti di sviluppo.

7. Creazione di contenitori con volumi di dati

Finora abbiamo mostrato solo alcune operazioni di base sul volume. Tuttavia, nella maggior parte degli scenari reali sarà necessario montare i volumi di dati su un contenitore Docker. Il seguente comando Docker mostra come creare un container Docker e montare un volume di dati su questo container.

$ docker run -d -it --name test-container -v "testVolume":/tmp ubuntu:xenial
$ docker run -d -it --name test-container --volume "testVolume":/tmp ubuntu:xenial

Questo comando creerà un contenitore denominato test-container utilizzando l'immagine ubuntu:xenial e monterà il nostro volume di dati su /tmp posizione di questo contenitore. Puoi trovare maggiori informazioni eseguendo il comando seguente e controllando la sezione "Monta" dell'output.

$ docker inspect test-container

8. Montaggio dei volumi di dati sui container

Il –mount L'opzione in Docker può essere utilizzata per indirizzare un volume di dati esistente a una parte specifica del filesystem del contenitore. Anche se il risultato sarà del tutto simile al comando precedente, è più intuitivo per molti sviluppatori Linux.

$ docker run -d -it --name test-container --mount source=testVolume,target=/tmp ubuntu:xenial

Il -monte opzione un insieme di tuple separate da virgole. Questi sono = coppie che denotano gli attributi del volume di dati.

9. Creazione di cavalcature vincolanti in Docker

I binding mount sono un meccanismo di persistenza disponibile sin dai primi giorni di Docker. Forniscono funzionalità alquanto limitate rispetto ai volumi docker, ma sono più adatti in alcuni casi specifici. Contrariamente ai volumi, i mount di bind dipendono dal filesystem host sottostante.

$ docker run -d -it --name test-container --mount type=bind,source=$(pwd),target=/tmp ubuntu:xenial

Il comando precedente crea un montaggio bind che associa la directory di lavoro corrente del filesystem Linux a /tmp posizione del contenitore. Il type=bind tuple indica che si tratta di un montaggio vincolante, piuttosto che di un volume.

10. Precompilazione dei volumi di dati

A volte gli sviluppatori possono richiedere di precompilare i loro volumi di dati durante la creazione di contenitori docker. Tuttavia, questa tecnica si applica solo se la destinazione di destinazione del contenitore contiene i dati prima della creazione del volume.

$ docker run -d --name=nginxContainer -v nginxVol:/usr/share/nginx/html nginx:latest

Questo comando crea prima il volume nginxVol e lo popola con il contenuto di /usr/share/nginx/html posizione del filesystem dei contenitori. Ora, questi dati saranno accessibili a tutti gli altri contenitori che condividono il volume nginxVol. Puoi utilizzare la sintassi di montaggio in alternativa, come mostrato di seguito.

$ docker run -d --name=nginxContainer --mount source=nginxVol,destination=/usr/share/nginx/html nginx:latest

11. Utilizzo dei volumi di sola lettura

Per impostazione predefinita, tutti i contenitori hanno accesso in lettura e scrittura ai rispettivi volumi di dati. Tuttavia, non tutti i contenitori devono scrivere dati su un volume. Spesso la semplice lettura dei dati è sufficiente. In questi casi, puoi assegnare l'accesso di sola lettura al tuo container. Controlla i comandi del volume della finestra mobile per vedere come funziona.

$ docker run -d --name=nginxContainer -v nginxVol:/usr/share/nginx/html:ro nginx:latest

Quindi, semplicemente aggiungendo ":ro ' dopo la destinazione vieterà a nginxContainer di scrivere dati su nginxVol. Dovrai usare "sola lettura ' opzione se stai creando volumi usando l'opzione –mount. Nota attentamente la differenza di sintassi.

$ docker run -d --name=nginxContainer --mount source=nginxVol,destination=/usr/share/nginx/html,readonly nginx:latest

12. Creazione di volumi utilizzando i driver

I driver di volume sono un meccanismo flessibile utilizzato da Docker per fornire l'accesso a montaggi remoti, crittografia dei dati e altre funzionalità. I comandi seguenti mostrano agli utenti come creare un contenitore Docker utilizzando un driver di volume specifico.

$ docker volume create --driver vieux/sshfs -o [email protected]:/home/session -o password=testPassword  sshVolume

Questo comando crea un volume di dati della finestra mobile utilizzando il driver vieux/sshfs. Questo driver consente agli sviluppatori di allegare directory remote utilizzando la tecnologia SSHFS.

13. Esecuzione di contenitori che creano volumi utilizzando i driver

È possibile utilizzare il comando seguente per creare e avviare contenitori che utilizzano i driver di volume per creare il relativo volume di dati. Questo esempio si basa su quello precedente.

$ docker run -d --name sshfsContainer --volume-driver vieux/sshfs --mount src=sshVolume,target=/tmp,[email protected]:/home/session,volume-opt=password=testPassword nginx:latest

La tupla volume-opt passa le opzioni. Non è richiesto per ogni caso d'uso. Tuttavia, se stai specificando l'opzione per il volume, devi utilizzare il –mount flag invece di -v o –volume.

14. Creazione di servizi che utilizzano un volume NFS

NFS o Network File System è un sistema di condivisione file distribuito che ci consente di utilizzare filesystem remoti come se facessero parte del filesystem locale. Il comando seguente mostra come creare un servizio che utilizza un volume NFS.

$ docker service create -d --name nfs-service --mount 'type=volume,source=nfsVolume,target=/tmp,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/var/docker-nfs,volume-opt=o=addr=10.0.0.10' nginx:latest

Questo comando presuppone che il nostro server NGS sia in esecuzione su 10.0.0.10 ed espone /var/docker-nfs directory. Utilizza anche NFSv3. Quindi dovrai apportare alcune modifiche prima di utilizzarlo con NFSv4.

15. Backup dei contenitori

I volumi offrono agli sviluppatori un modo flessibile per eseguire il backup dei dati dei contenitori essenziali. A scopo illustrativo, creeremo prima un nuovo contenitore denominato test-container.

$ docker run -v /data --name test-container ubuntu:xenial /bin/bash

Quindi, test-container ha un volume chiamato /data. Ora lanceremo un altro container e monteremo /data volume dal contenitore di prova. Quindi monteremo una directory locale del nostro filesystem come /backup e quindi archiviare il contenuto di /data al /backup directory come backup.tar.

$ docker run --rm --volumes-from test-container -v $(pwd):/backup ubuntu:xenial tar cvf /backup/backup.tar /data

I –volumi-da l'opzione indica che stiamo effettivamente montando il volume di dati di test-container nel nostro nuovo contenitore.

16. Ripristino dei backup dei contenitori

È anche molto facile ripristinare i contenitori dai file di backup. È possibile ripristinare i dati nello stesso contenitore o in un contenitore specifico. Ti mostreremo come ripristinare il contenuto del file backup.tar creato nell'esempio precedente in un contenitore diverso qui.

$ docker run -v /data --name test-container2 ubuntu /bin/bash

Questo comando crea un altro nuovo contenitore con un /data volume. Ora estrarremo il contenuto del file backup.tar in questo nuovo volume di dati.

$ docker run --rm --volumes-from test-container2 -v $(pwd):/backup ubuntu bash -c "cd /data && tar xvf /backup/backup.tar --strip 1"

Puoi automatizzare backup e ripristini utilizzando questi comandi del volume Docker semplici ma flessibili a tuo agio.

17. Rimozione di volumi anonimi

In precedenza, abbiamo visto come eliminare un normale volume denominato. Tuttavia, Docker ha anche un altro tipo di volume di dati chiamato volumi anonimi. Dai una rapida occhiata al comando seguente per vedere come l'operazione di eliminazione differisce tra i volumi con nome e quelli anonimi.

$ docker run --rm -v /anon -v whats-in-a-name:/tmp busybox top

Il comando precedente creerà un volume anonimo chiamato /anon e un volume denominato cosa-in-un-nome . Ora, Docker rimuoverà automaticamente questo contenitore all'uscita. Tuttavia, eliminerà solo il /anon volume, non il volume che cosa è in un nome. Devi eliminarlo usando il comando del volume della finestra mobile rm.

18. Specificare la propagazione del monte

La propagazione della montatura denota il flusso di controllo tra la montatura originale e le sue repliche. Per impostazione predefinita, sia il montaggio del binding che i volumi utilizzano rprivate collocamento. Ciò evita qualsiasi propagazione tra la montatura originale e le sue repliche. Puoi sovrascrivere questa impostazione usando la tupla di propagazione del collegamento del montaggio del collegamento.

$ docker run -d -it --name test-container --mount type=bind,source="$(pwd)"/test,target=/tmp --mount type=bind,source="$(pwd)"/test,target=/temp,readonly,bind-propagation=shared nginx:latest

Questo comando monta il /test directory due volte nel contenitore. Inoltre, qualsiasi nuova aggiunta a /tmp mount si rifletterà in /temp montare. Tuttavia, non è possibile ignorare l'impostazione di propagazione quando si utilizzano i volumi. Funziona solo quando si utilizza il montaggio vincolato su un host Linux.

19. Visualizzazione del manuale dei comandi del volume

Puoi facilmente visualizzare l'utilizzo di base dei comandi del volume utilizzando il comando seguente.

$ man docker volume

Tuttavia, non fornisce spiegazioni approfondite. Quindi, ti suggeriamo di consultare la documentazione ufficiale della finestra mobile sui volumi e sui binding mount.

20. Visualizzazione della pagina di aiuto per i comandi secondari

Utilizzare il comando seguente per visualizzare le opzioni principali disponibili per il volume della finestra mobile.

$ docker volume --help

Puoi anche visualizzare ulteriori informazioni su un'opzione specifica utilizzando la seguente sintassi.

$ docker volume COMMAND --help
$ docker volume ls --help

Pensieri finali

I volumi Docker forniscono una struttura tanto necessaria per le applicazioni moderne. Consentono agli sviluppatori di creare app e servizi robusti e all'avanguardia eliminando i problemi di archiviazione. Inoltre, i comandi del volume Docker semplificano anche la creazione e la gestione dei backup dei dati del contenitore. Abbiamo preparato questa guida attentamente studiata per aiutarti a padroneggiare più facilmente i volumi di dati. Ti consigliamo vivamente di iniziare prima con i comandi di base e poi passare gradualmente a scenari complessi e di vita reale. Speriamo di averti fornito le informazioni che stavi cercando in questa guida. Non dimenticare di lasciarci un commento in caso di domande.


Linux
  1. 12 utili esempi di comandi Wget in Linux

  2. 16 Utili esempi di comandi "cp" per principianti di Linux

  3. 10 esempi pratici di comandi Grep per sviluppatori

  4. ls Command in Linux:17 esempi utili spiegati

  5. Esempi di comandi lvremove in Linux

11 utili esempi di comandi divisi per sistemi Linux

Spiegazione dei volumi Docker con esempi

Exa:un sostituto moderno per ls Command

40 esempi utili di comando PS Linux per aspiranti amministratori di sistema

I 40 esempi di comandi Go per aspiranti sviluppatori Golang

12 Esempi utili di comandi data di Linux