I volumi Docker sono il modo preferito per gestire i dati persistenti creati da e utilizzati dai container Docker. Diamo un’occhiata a come funziona questo coprendo come creare volumi Docker su Windows. Imparerai anche come gestirli!
Questo post del blog ha un video correlato creato da contributore TechSnips, Matt McElreath. Sentiti libero di guardarlo o, se preferisci il testo, continua a leggere!
Memorizzazione dati persistenti
Se desideri memorizzare dati persistenti per i container, ci sono un paio di opzioni. Prima di tutto, ti mostrerò come utilizzare un mount bind. Attualmente mi trovo in una cartella chiamata data sul mio C:\. Se elenco i contenuti di questa cartella, puoi vedere che ho cinque file di testo.

Se voglio rendere questa cartella disponibile per un container, posso montarla quando avvio il container.
Andiamo avanti e eseguiamo un container usando docker run
. Sto per eseguire questo container in modalità interattiva, quindi specificare -V
. Qui, metterò il percorso della mia cartella dati, seguito da due punti, quindi specifico il percorso all’interno del container dove vorrei che questa cartella fosse montata.
Per questo, sto per specificare la cartella C:\shareddata. Successivamente, indicherò l’immagine del server core di Windows e infine, specificherò che voglio eseguire PowerShell una volta dentro il contenitore.
Ora che sono dentro il nuovo contenitore, se elenco i contenuti di C:\, puoi vedere che ho una cartella shareddata.

Entriamo in quella cartella e elenchiamo i contenuti. Ecco i miei cinque file di test che si trovano sul mio host del contenitore.

I can also create files in this folder, which will be available to other containers or my container host. Let’s go ahead and run a new item to create a file called containertest.

Possiamo vedere sopra che il nuovo file è stato creato dall’interno del contenitore. Ora uscirò da questo contenitore, il che lo spegnerà eseguendo exit
.
Se eseguo docker ps
, puoi vedere che attualmente non ci sono contenitori in esecuzione.

Enumerare i dati nei volumi Docker
Ora elenchiamo nuovamente i contenuti della cartella dei dati dal mio host del contenitore.

Possiamo vedere il nuovo file che è stato creato dall’interno del contenitore chiamato containertest. I mount di bind hanno alcune funzionalità limitate, tuttavia, i volumi sono il modo preferito per ottenere ciò che stiamo cercando di fare. Per iniziare con i volumi, possiamo eseguire lo stesso comando per avviare un contenitore, ma questa volta con un paio di piccole differenze. Dove abbiamo specificato il volume, anziché utilizzare il percorso sul file system dell’host del contenitore, userò la parola hostdata come nome di un volume che voglio creare e utilizzare.
Dal dentro il nuovo contenitore, se elenco i contenuti di C:\, puoi vedere nuovamente che ho una cartella chiamata shareddata.

Se elenco i contenuti di quella cartella, è attualmente vuota perché abbiamo creato un volume vuoto. Ora eseguiamo Ctrl-P-Q che ci porterà fuori dal container in esecuzione, ma lo manterrà in esecuzione in background.
Dall’host del container, eseguire docker volume ls
. Questo elencherà i volumi attuali su questo host del container. Ho un volume chiamato hostdata, che è stato creato quando l’ho specificato nel comando docker run
.

Se eseguo docker ps
possiamo vedere il nostro container in esecuzione.

Arresta quel container usando docker stop
. Ora non abbiamo più container in esecuzione.

Rimuovere i container arrestati eseguendo docker rm
. Se elenco di nuovo i volumi, puoi vedere che il volume hostdata è ancora disponibile e può essere montato su nuovi container.

Creazione dei Volumi Docker
Un altro modo per creare un volume è utilizzare il comando docker volume create
. Se non si specifica un nome, docker gli darà un nome che è una lunga lista di caratteri casuali. Altrimenti, è possibile specificare un nome qui. Chiamerò questo volume logdata. Ora possiamo vederlo nell’elenco quando elenchiamo di nuovo i volumi.

Ora lo monto su un nuovo container. Usa di nuovo docker run
e per il volume specifica il volume appena creato e montalo su c:\logdata.
Dall’interno del contenitore, vai nella cartella logdata e crea un paio di file. Al momento, non ci sono file in questa directory, quindi procedi con la creazione.
Ora ho due file di registro in questa directory.

Esegui nuovamente Ctrl-P-Q per uscire da questo contenitore mentre è ancora in esecuzione. Mentre quel contenitore è in esecuzione, avvia un nuovo contenitore con lo stesso volume montato.
Se eseguiamo un elenco nella cartella logdata nel nuovo contenitore, possiamo vedere i due file di registro condivisi.

Ora, esci da questo contenitore. Dovresti ancora avere un contenitore in esecuzione e due contenitori chiusi.

Ora arresta tutti i contenitori in esecuzione, quindi esegui docker rm
per rimuovere tutti i contenitori chiusi.

Elenca di nuovo i volumi. Il volume logdata è ancora disponibile per essere montato nei futuri contenitori.

Se esegui docker volume
, otterrai un aiuto sull’uso del comando.

Ispezione dei volumi Docker
Abbiamo già esaminato create
, quindi passiamo a inspect
. Se eseguo docker volume inspect
sul volume logdata, restituirà le proprietà di quel volume, inclusa la directory di montaggio, che è il percorso fisico del volume sull’host del contenitore.

Apriamo quella cartella usando Invoke-Item
e diamo un’occhiata. Sotto la cartella logdata, c’è una cartella chiamata data. Se la apriamo, possiamo vedere i file creati dal contenitore in precedenza.

Eliminazione dei volumi Docker
Per eliminare un volume, possiamo eseguire docker volume rm
, seguito dal nome del volume che si desidera eliminare.
Ora, se elenco i volumi, logdata non è più presente.

Infine, possiamo utilizzare prune
per rimuovere tutti i volumi locali non utilizzati. Questo eliminerà tutti i volumi che non sono montati su un contenitore in esecuzione o arrestato.

È importante fare attenzione a questo comando, quindi c’è un avviso e una richiesta di conferma per assicurarsi di voler davvero eseguire questa operazione. Se digito Y
e premo invio, verrà mostrato quali volumi sono stati eliminati.
E se elenco di nuovo i miei volumi, vedrai che sono tutti stati eliminati.

Riassunto
In questo post del blog, dovresti aver ottenuto una buona panoramica della gestione dei volumi Docker in Windows. Docker è una fantastica piattaforma di container. Con il suo supporto per Windows e le tue nuove competenze nella gestione dei volumi Docker, sarai imbattibile!