Introduzione
Docker consente agli utenti di eseguire varie applicazioni isolate dal computer host, senza la necessità di disporre di sistemi operativi separati per l'esecuzione. Invece, installi e gestisci i container Docker con un motore di containerizzazione (daemon Docker), che ha un ruolo simile all'hypervisor per le macchine virtuali.
Quando inizi a utilizzare Docker, affronterai situazioni in cui devi sapere come condividere i dati tra i contenitori.
Prerequisiti
- Un utente con privilegi sudo
- Accesso a un terminale/riga di comando
- Una versione stabile di Docker
Passaggio 1:crea un container con volume di dati
Per dimostrare come condividere tra due contenitori devi creare un contenitore (Container1 ) con volume di dati (volume di dati1 ) puoi condividere in seguito.
1. Innanzitutto, crea un volume indipendente che condividerai tra due contenitori Docker:
docker volume create --name DataVolume1
2. Quindi, crea un contenitore Docker e denominalo Contenitore1 con il volume di dati allegato eseguendo il comando seguente:
docker run -ti --name=Container1 -v DataVolume1:/datavolume1 ubuntu
2. Quindi, crea un file nel volume di dati e aggiungi del testo:
echo "Share this file between containers" > /datavolume1/Example.txt
3. Esci dal container con il comando:exit
Fase 2:crea un nuovo contenitore e aggiungilo al volume di dati
Quindi, crea un nuovo contenitore (Container2 ) che condividerà i file con Container1 .
1. Crea Contenitore2 e monta i volumi da Container1 :
docker run -ti --name=Container2 --volumes-from Container1 ubuntu
2. Aggiungi testo da Contenitore2 per mostrare che entrambi i contenitori possono scrivere su DataVolume1 :
echo "This will also appear in DataVolume1" >> /datavolume1/Example.txt
3. Per uscire da Container2 usa il comando:exit
Passaggio 3:verifica di poter condividere dati tra container Docker
1. Riavvia Contenitore1 per verificare le modifiche al volume dei dati:
docker restart Container1
2. Conferma che entrambi i contenitori possono leggere e scrivere sullo stesso volume di dati e che il testo che hai scritto in Contenitore2 appare in DataVolume1 :
cat /datavolume1/Example.txt
Se il testo è stato aggiunto correttamente al volume di dati, l'output dovrebbe visualizzare quanto segue:
Share this file between containers
This will also appear in DataVolume1
3. Per finire, esci dal container con il comando:exit
Facoltativo:crea volumi di sola lettura
La creazione di un contenitore Docker di "sola lettura" impedisce ad altri di apportare modifiche ai dati, consentendo loro solo di visualizzare i file.
Aggiungi :ro
al nome del contenitore che deve essere condiviso ma non modificato.
Nell'esempio seguente, Contenitore2 potrà vedere i file da Container1 ma non sarà in grado di modificarli.
docker run -ti --name=Container2 --volumes-from Container1:ro ubuntu
Per verificare se Contenitore2 dispone dei privilegi di sola lettura, prova a rimuovere il file di esempio da Container1 eseguendo il comando:
rm /datavolume1/Example.txt
L'output dovrebbe mostrare che hai creato correttamente un file di sola lettura. Di conseguenza, altri contenitori possono accedere e visualizzare i dati, ma non possono apportare alcun contributo o modifica agli stessi.