Creare volumi Docker su Windows senza sforzo

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.

Multiple text files in the C:\data folder

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.

docker run -it -v c:\Data:c:\shareddata microsoft/windowsservercore powershell

Ora che sono dentro il nuovo contenitore, se elenco i contenuti di C:\, puoi vedere che ho una cartella shareddata.

Listing directory contents in a Docker container

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

Files on the host

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.

Creating a file on the container host

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.

Looking for running containers

Enumerare i dati nei volumi Docker

Ora elenchiamo nuovamente i contenuti della cartella dei dati dal mio host del contenitore.

Listing files on the container host

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.

Listing files

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.

Listing Docker volumes

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

Listing running containers

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

Stopping a Docker container

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.

Listing Docker volumes

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.

Creating a new Docker volume

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.

> docker run -it -v logdata:c:\logdata microsoft/windowsservercore powershell

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.

PS> New-Item -Name Log1.txt -ItemType File
PS> New-Item -Name Log2.txt -ItemType File

Ora ho due file di registro in questa directory.

Two files in C:\logdata

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.

> docker run -it -v logdata:c:\logdata microsoft/windowsservercore powershell

Se eseguiamo un elenco nella cartella logdata nel nuovo contenitore, possiamo vedere i due file di registro condivisi.

Two log files being shared with containers

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

Two containers still running

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

Removing Docker containers

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

Volume still available

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

Docker volume syntax

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.

Inspecting Docker volumes

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.

Files created earlier

Eliminazione dei volumi Docker

Per eliminare un volume, possiamo eseguire docker volume rm, seguito dal nome del volume che si desidera eliminare.

> docker volume rm logdata

Ora, se elenco i volumi, logdata non è più presente.

Listing Docker volumes

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.

Inspecting the prune parameter

È 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.

No Docker volumes exist

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!

Source:
https://adamtheautomator.com/create-docker-volume/