Utilizzo dei volumi Docker per condividere i dati tra contenitori e computer host

Utilizzo dei volumi Docker per condividere i dati tra contenitori e computer host
I volumi Docker vengono utilizzati per persistere sui dati da una determinata directory o directory dei contenitori Docker. Quindi i tuoi dati non vengono rimossi quando il contenitore si interrompe o viene rimosso.

Puoi anche condividere un volume Docker per molti contenitori. Parliamo di uno scenario per scoprire perché è importante.

Supponiamo che tu abbia un'applicazione Web PHP. Ora vuoi testare se funziona sulla versione 5 PHP.4, 7.0, 7.1 e 7.2. Puoi creare un volume Docker, chiamiamolo WebApp. Quindi copia i file del codice sorgente dell'app Web PHP nel volume Docker WebApp. Quindi è possibile creare contenitori di diverse versioni PHP e collegare il volume Docker WebApp a Webroot di tutti questi contenitori. In questo modo, puoi facilmente testare il modo in cui la tua app Web funziona su diverse versioni PHP.

In questo articolo, ti mostrerò come utilizzare i volumi Docker per condividere i dati tra i contenitori e il computer host. Iniziamo.

Creazione di volumi Docker:

Prima di poter aggiungere un volume Docker al tuo contenitore, devi creare un volume Docker.

Per creare un volume di Docker (diciamo dati1), esegui il seguente comando:

$ Docker Volume Crea Data1

dati1 il volume dovrebbe essere creato.

Elenco volumi Docker:

Puoi elencare tutti i volumi Docker creati con il seguente comando:

$ Docker Volume List

Come puoi vedere, tutti i volumi Docker sono elencati. In questo momento, ho solo dati1 Volume Docker. Se ne avessi creato di più, si presenterebbe qui.

Ispezionando i volumi Docker:

Puoi vedere ulteriori informazioni su un certo volume Docker (diciamo dati1) con il seguente comando:

$ Docker Volume Ispeziona Dati1

Come puoi vedere, molte informazioni sul dati1 Il volume è elencato in formato JSON. Il più importante è Mountpoint. Mountpoint ti dice il percorso del file system locale in cui è montato il volume. Qui, il dati1 Il volume è montato /var/lib/docker/volumes/data1/_data sul mio file system locale. Ti mostrerò come modificare i dati sui volumi Docker dal tuo computer host in una sezione successiva di questo articolo di seguito.

Aggiunta di volumi ai contenitori e condivisione di volumi tra contenitori:

Ora ho intenzione di creare un semplice contenitore Docker da httpd: 2.4 Immagine Docker per l'esecuzione di WebServer Apache 2. Poi ho intenzione di montare il dati1 volume a /USR/Local/Apache2/HTDOCS Directory di quel contenitore Docker. Darò anche un nome al contenitore (diciamo www) solo per gestirlo facilmente.

Per fare ciò, eseguire il seguente comando:

$ Docker run -d -t --name = www -mount source = data1, destinazione =/usr/local/apache2/htdocs
httpd: 2.4

Il container www dovrebbe essere creato.

Ora per verificare se il dati1 Il volume è stato montato su www Container, eseguire il seguente comando:

$ Docker Ispeziona www

È un lungo elenco di informazioni. Ma sul Supporti, puoi vederlo, il nome del volume è dati1, è montato /USR/Local/Apache2/HTDOCS sul www contenitore.

Ora ho intenzione di connettermi a www contenitore ed eseguire il file Bash shell lì con il seguente comando:

$ Docker Exec -it www bash

Come puoi vedere, Bash Shell è in esecuzione.

Ora creiamo un semplice file HTML in /USR/Local/Apache2/HTDOCS directory dove il dati1 Il volume è montato.

$ Echo "Hello World">/USR/LOCAL/APACHE2/HTDOCS/INDICE.html

Ora esci dal www Container Docker con il seguente comando:

$ uscita

Ora scopri l'indirizzo IP del www Container con il seguente comando:

$ Docker Ispect www | indirizzo grep

Come puoi vedere, l'indirizzo IP del contenitore WWW è 172.17.0.2 (nel mio caso).

Quando accedo al www Container dal browser Web, puoi vedere che viene visualizzata la pagina che ho appena creato.

Ora creerò un altro contenitore www2 e attaccare il dati1 volume ad esso allo stesso modo e vedere se le modifiche al dati1 volume (montato in /USR/Local/Apache2/HTDOCS In www E www2 contenitore) da un contenitore è visibile all'altro contenitore.

Per creare un nuovo contenitore www2, e attaccare il dati1 Volume ad esso, esegui il seguente comando:

$ Docker run -d -t --name = www2 -source -mount = data1, destinazione =/usr/local/apache2/htdocs
httpd: 2.4

Ora troviamo l'indirizzo IP del www2 Container con il seguente comando:

$ Docker Ispeziona www2 | indirizzo grep

Come puoi vedere, ottengo la stessa pagina quando accedo al www2 Container da un browser web. Significa che i dati dal www il contenitore persisteva e condiviso a www2 contenitore.

Ora ho intenzione di apportare modifiche al indice.html (nel dati1 volume montato in /USR/Local/Apache2/HTDOCS) pagina dal www2 contenitore e verificare se la modifica si riflette sia a www E www2 contenitori.

Come puoi vedere, le modifiche apportate a un contenitore (www2 In questo caso) si riflette sull'altro contenitore (www in questo caso).

Accesso ai volumi Docker dal computer host:

NOTA: Perché questo funzioni, devi essere effettuato come radice utente.

È possibile eseguire il seguente comando per trovare il percorso del dati1 Volume Docker nel computer host:

# Docker Volume Ispeziona Dati1

Come puoi vedere, il dati1 Il volume è nel /var/lib/docker/volumes/data1/_data Directory del mio computer host.

Ora naviga su /var/lib/docker/volumes/data1/_data Directory con il seguente comando:

# cd/var/lib/docker/volumes/data1/_data

Come puoi vedere, il indice.html Il file che abbiamo appena creato è lì.

# ls

Anche il contenuto del indice.html Il file è lo stesso.

Ora, modifichiamo il indice.html file e vedere se le modifiche si riflettono in www E www2 contenitori.

# nano indice.html

Ho cambiato il contenuto del indice.html file a questo:

Come puoi vedere, le modifiche si riflettono su www e il www2 contenitori.

Rimozione dei volumi Docker:

Se lo desideri, puoi anche eliminare un volume Docker. Per eliminare un volume di Docker, diciamo data2, Esegui il seguente comando:

$ Docker Volume RM Data2

Il volume Docker data2 dovrebbe essere eliminato permanentemente.

È così che condividi i volumi Docker tra container e computer host. Grazie per aver letto questo articolo.