Volumi Dockerfile

Volumi Dockerfile
Quando si esegue un contenitore Docker, nessuno dei dati in quel contenitore viene salvato. Quello che voglio dire è, diciamo che hai iniziato un contenitore Docker. Quindi hai creato alcuni file e cartelle in una directory (diciamo /dati) Là. Quando si interrompe il contenitore, tutti i file e le cartelle in /dati La directory verrà rimossa. Quando si avvia di nuovo il contenitore, dovrai ricreare tutti i file e le cartelle se ne hai bisogno di nuovo. Nessuno dei dati persisterà.

È possibile utilizzare i volumi Docker per salvare le modifiche di una determinata directory dei contenitori Docker. In parole semplici, puoi persistere i dati dei tuoi contenitori Docker utilizzando volumi Docker.

Puoi dire a Docker quale directory del tuo contenitore Docker per persistere Dockerfile Quando si crea immagini Docker personalizzate utilizzando Dockerfile.

In questo articolo, ti mostrerò come usare i volumi Docker in Dockerfile e come gestire questi volumi. Iniziamo.

Usando i volumi in Dockerfile:

In questa sezione, creerò un'immagine Docker personalizzata di Apache 2 Server dall'immagine Docker httpd: 2.4 e usa i volumi Docker per persistere sui dati di Apache Webroot.

Innanzitutto, crea una nuova directory (diciamo www3) per la tua immagine Docker personalizzata (diciamo www: v1) e navigare verso di esso:

$ mkdir www3 && cd www3

Ora crea un Dockerfile con il seguente comando:

$ touch Dockerfile

Ora modifica il Dockerfile file con nano O vim editor di testo.

Nano:

$ nano Dockerfile

Vim:

$ vim Dockerfile

Ora aggiungi le seguenti righe e salva il file:

Qui, Da httpd: 2.4 significa che l'immagine di base di questa immagine Docker personalizzata è httpd: 2.4

Workdir/usr/local/apache2/htdocs significa, quando si è in modo /USR/Local/Apache2/HTDOCS Directory del contenitore per impostazione predefinita.

VOLUME /USR/Local/Apache2/HTDOCS mezzi, creare un nuovo volume per ciascuno dei contenitori creati da questa immagine personalizzata e persistere tutti i file in /USR/Local/Apache2/HTDOCS directory di quel contenitore a questo nuovo volume.

Ora che hai il tuo Dockerfile Pronto, è ora di costruire la nostra immagine Docker personalizzata (la chiamerò www: v1).

Per creare la tua immagine Docker personalizzata www: v1 usando il Dockerfile, Esegui il seguente comando:

$ Docker build -t www: v1

L'immagine Docker personalizzata www: v1 è creato con successo.

Elenco immagini Docker disponibili localmente:

È possibile elencare tutte le immagini Docker disponibili localmente con il seguente comando:

$ Docker Elenco delle immagini

Come puoi vedere, il www: v1 L'immagine ha dimensioni di circa 178 MB ed è stata creata circa un minuto fa.

Lavorare con volumi e contenitori Docker:

Abbiamo creato un'immagine Docker abilitata al volume www: v1 Nella sezione precedente di questo articolo sopra.

Per creare un contenitore Docker (diciamo app1) dall'immagine del docker personalizzato www: v1, Esegui il seguente comando:

$ Docker run -d -it --name = app1 www: v1

Il contenitore Docker app1 dovrebbe essere creato.

Ora esegui il seguente comando per far apparire la shell del app1 contenitore:

$ Docker Exec -it App1 /Bin /Bash

Come puoi vedere, sono in /USR/Local/Apache2/HTDOCS directory per impostazione predefinita.

Creiamo un indice.html File qui con il seguente comando:

$ eco "

Hello World (App1)

"> Indice.html

Ora esci dal app1 contenitore.

$ uscita

Ora esegui il seguente comando per trovare l'indirizzo IP del app1 contenitore:

$ Docker Ispect App1 | indirizzo grep

Come puoi vedere, l'indirizzo IP è 172.17.0.2

Ora da qualsiasi browser Web, se visiti la pagina a 172.17.0.2, dovresti vedere il indice.html pagina che hai appena creato.

Ora testiamo se la persistenza funziona o no.

Prima fermata il app1 Container con il seguente comando:

$ Docker Container Stop App1

Quindi avviare nuovamente il contenitore con il seguente comando:

$ Docker Container Start App1

Ora trova di nuovo l'indirizzo IP del contenitore:

$ Docker InspectApp1 | indirizzo grep

Come puoi vedere, il indice.html La pagina è invariata quando la accedo dal mio browser web. Significa che il volume di Docker sta persistendo dati da app1 contenitore.

Gestire i volumi Docker:

È possibile elencare tutti i volumi Docker sul computer con il seguente comando:

$ Docker Volume List

Come puoi vedere, ho 2 volumi Docker sul mio computer. La lunga stringa esadecimale come contrassegnata nello screenshot seguente, è il volume generato automatico per il app1 contenitore.

Quando si crea un contenitore da un'immagine Docker che utilizza volumi, un nuovo volume come questo verrà generato per ciascun contenitore che crea.

Ad esempio, ho creato un altro contenitore app2 dal www: v1 immagine che ho costruito dal Dockerfile che utilizza il volume.

Come puoi vedere, viene generato un nuovo volume.

Entrambi questi volumi hanno dati diversi. I dati persistono per un solo contenitore per il quale è stato generato. Ad esempio, il volume generato per il app1 Il contenitore persiste solo i dati app1 contenitore. Lo stesso vale per il app2 contenitore. Il volume generato per il file app1 Il contenitore non memorizzerà i dati da app2 contenitore.

Puoi rimuovere i volumi se non ne hai più bisogno. Affinché ciò funzioni, devi fermare e rimuovere il contenitore a cui il volume è collegato. Se si tenta di rimuovere un volume allegato a un contenitore, riceverai il seguente messaggio di errore.

Supponiamo che tu voglia eliminare il volume per app2 Container, eseguire prima i seguenti comandi per fermare e rimuovere il contenitore:

$ Docker Container Stop App2
$ Docker Container RM App2<

Ora rimuovi il volume che è stato attaccato a app2 Container con il seguente comando:

$ Docker Volume RM 962B2D970BCD96DE860B348130A84AA86C0AAA55378B3DCE35225659679FF808

Il volume dovrebbe essere rimosso.

Aggiunta di file a volumi utilizzando Dockerfile:

Puoi usare il COPIA comando nel tuo Dockerfile per copiare i file dal tuo computer host ai volumi Docker. In questo modo, qualsiasi contenitore creato dalla tua immagine Docker costruita su misura avrà questi file per impostazione predefinita. Puoi controllare di più su COPIA nel Dockerfile documentazione.

Quindi è fondamentalmente come lavori con i volumi Docker Dockerfile. Grazie per aver letto questo articolo.