Se non conosci Docker, potresti non aver ancora scoperto come condividere contenitori e immagini con altri sviluppatori o macchine. Ma è possibile condividere i container? Sì! Consenti alla docker save
comando immagine e docker export
il comando image fa il trucco!
In questo tutorial imparerai come salvare ed esportare contenitori e immagini per la condivisione eseguendo i comandi Docker.
Pronto? Iniziamo!
Prerequisiti
Questo tutorial sarà una dimostrazione pratica. Se desideri continuare, assicurati di avere quanto segue:
- In questo tutorial viene utilizzato Docker Desktop o Engine installato come versione 20.10.7.
- In questo tutorial viene utilizzato qualsiasi sistema operativo compatibile Docker, Ubuntu.
Creazione di un'applicazione Docker di base
Prima di passare all'esportazione o al salvataggio di contenitori e immagini Docker, devi prima creare un'applicazione che utilizzerai per la condivisione. Creerai una soluzione aritmetica di base come un'applicazione Docker di esempio tramite un ambiente a riga di comando.
1. Crea un file per il tuo progetto chiamato Dockerfile
e incolla il codice qui sotto nel Dockerfile
appena creato .
Il codice seguente esegue un'operazione aritmetica di base che restituisce un valore di 10.
# busybox provides Unix utilities in a single executable file,
# which enables you to do some arithmetic.
FROM busybox
# Performs a basic arithmetic operation that results in a value of 10.
CMD echo $(((20*5)/10))
2. Quindi, apri il tuo terminale ed esegui docker build
comando seguente per compilare l'applicazione denominata (arithmetic
) nel luogo di lavoro (.
).
docker build --tag arithmetic .
Se stai usando Linux, potresti dover anteporre il comando sudo per evitare di ricevere un errore di "autorizzazione negata", come questo:
sudo docker build --tag arithmetic
. Aggiunta disudo
command eleva il comando come amministratore.
3. Esegui il comando seguente per eseguire l'applicazione Docker che hai creato (arithmetic
). L'esecuzione dell'app Docker crea automaticamente anche un contenitore per la tua applicazione.
docker run arithmetic
Esportazione di container Docker
Ora che hai un'applicazione Docker di base, è tempo di spiegare come esportare un container Docker. La creazione di un'applicazione di grandi dimensioni richiede molto tempo e può essere un ostacolo se desideri semplicemente condividere il contenitore con il tuo team. Quindi c'è un modo più rapido per condividere il contenitore? Sì!
Invece di creare l'applicazione direttamente da un Dockerfile, esporta il contenitore Docker.
1. Esegui la docker load
comando seguente per elencare tutto (ls --all
) containers
disponibile sulla tua macchina. Nota il CONTAINER ID
del contenitore che desideri condividere poiché ti servirà per esportare il contenitore nel passaggio successivo.
Tieni presente che puoi esportare solo contenitori, non immagini.
docker container ls --all
2. Quindi, esegui il comando seguente per export
il contenitore Docker di tua scelta (container-id
). Sostituisci container-id
con l'ID contenitore annotato nel passaggio uno.
Durante l'esportazione, salvi il filesystem del contenitore in un .tar archivio (arithmetic.tar
).
docker export container-id > arithmetic.tar
3. Infine, controlla la cartella del tuo progetto nel tuo file manager e vedrai che un nuovo .tar archivio è stato creato (arithmetic.tar ). Poiché hai esportato il contenitore in un .tar archivio, ora puoi condividerlo con chiunque.
Importazione di contenitori Docker
Invece di esportare, forse devi importare un container Docker che un compagno di squadra ha condiviso con te. In tal caso, l'docker import
il comando è ciò di cui hai bisogno. L'docker import
Il comando prende il filesystem esportato e lo converte in un filesystem immagine che puoi eseguire sulla tua macchina.
1. Esegui la seguente docker load
comando per import
un contenitore (arithmetic.tar
) e convertirlo in un'immagine. Durante l'importazione, devi allegare un tag (latest
) e nominare l'immagine (put_any_name_here
), come mostrato di seguito.
docker import arithmetic.tar put_any_name_here:latest
2. Quindi, esegui il comando seguente per elencare tutte le immagini Docker esistenti, in modo da poter verificare se esiste una nuova immagine.
docker images
Di seguito, puoi vedere che esiste una nuova immagine Docker.
3. Ora esegui docker run
comando seguente per aprire la shell (sh
) per l'immagine importata. Il container funziona in modo interattivo ed è collegato al tuo terminale (-i
e -t
bandiere).
docker run -i -t put_any_name_here:latest sh
Puoi dire dal prompt qui sotto (/ #), ora sei nella shell dell'immagine importata.
4. Infine, esegui il comando seguente per vedere se l'immagine funziona come previsto.
echo $(((20*5)/10))
Se l'immagine funziona, otterrai un output di 10 , come mostrato di seguito.
Se provi a eseguire direttamente l'immagine, riceverai un errore, come mostrato di seguito, poiché l'immagine importata è un'immagine del filesystem.
Salvataggio delle immagini tramite Docker Salva immagine
Forse vuoi salvare un'immagine Docker piuttosto che un contenitore. In tal caso, vai con il docker save
comando immagine invece. A differenza dell'docker export
comando, il docker save
Il comando consente di salvare direttamente una o più immagini in un archivio tar e condividerlo con chiunque.
Tieni presente che puoi salvare e caricare solo immagini Docker, non contenitori.
- Esegui il comando seguente per salvare un'immagine Docker (aritmetica) nel tuo .tar preferito archivio (
arm_image.tar
). Ora puoi condividere il .tar archiviare con altri sviluppatori in modo che possano caricare l'immagine.
docker save arithmetic > arm_image.tar
2. Ora esegui il comando seguente per creare una directory con il nome che preferisci (mkdir arm
). Ma per questa demo, la directory si chiama arm
. Il comando estrae quindi l'immagine da .tar archivio (-xf arm_image.tar
) nella nuova directory (arm
).
Estrazione del contenuto del .tar archivio ti consente di confermare se l'immagine è stata salvata nel .tar l'archivio esiste.
mkdir arm && tar -xf arm_image.tar -C arm
3. Infine, esegui l'tree
comando seguente per visualizzare l'albero delle directory dell'immagine estratta nel ~/arm
directory. tree ~/arm
Di seguito puoi vedere i file e le sottodirectory all'interno della directory in cui hai estratto l'immagine Docker.
Se prevedi di condividere la tua immagine Docker sull'hub Docker, l'opzione migliore è eseguire il
docker save
comando. Come mai? Con ildocker save command
, stai essenzialmente salvando l'immagine esattamente come dovrebbe funzionare. Inoltre, puoi pubblicare immagini solo sull'hub Docker, quindi sicuramente ildocker export command
non è una buona opzione.
Caricamento delle immagini Docker
Supponendo che tu abbia già salvato un'immagine a scopo di backup o condivisione, come la caricheresti su una macchina? Nessun problema, il docker load
il comando può aiutare. Il docker load
Il comando ti consente di caricare un'immagine o un repository sulla tua macchina, ripristinando sia le immagini che i tag.
Per vedere meglio come viene caricato il docker load
il comando funziona, elimina tutte le immagini Docker che hai creato in precedenza.
1. Esegui il comando seguente per elencare tutte le images
Docker nella tua macchina
docker images
Di seguito, puoi vedere che ci sono due immagini disponibili. Annota l'ID IMMAGINE di ciascuna delle immagini poiché eliminerai quelle immagini nel passaggio successivo.
2. Esegui il comando seguente per eliminare (rm
) Immagini Docker in base agli ID immagine specificati. Sostituisci imageID1
e imageID2
con gli ID immagine annotati nel passaggio uno.
docker image rm imageID1 imageID2
3. Ora, esegui il docker load
comando seguente per caricare un'immagine da un .tar archivio (arm_image.tar
).
docker load < arm_image.tar
4. Esegui nuovamente le docker images
comando come hai fatto nel passaggio uno per elencare tutte le immagini disponibili nella tua macchina. docker images
docker images
Di seguito, puoi vedere l'immagine appena caricata.
5. Infine, eseguire il comando seguente per eseguire e verificare se l'immagine funziona.
docker run arithmetic
Si noti che il comando ha restituito un valore di 10, che indica che l'immagine caricata funziona.
Conclusione
Durante questo tutorial, hai imparato come esportare e importare contenitori, oltre a caricare e salvare immagini. Ora dovresti avere una conoscenza di base della conversione delle immagini e dei contenitori di salvataggio di Docker in un formato condivisibile, ad esempio un file TAR.
Ad un certo punto, dovrai condividere l'immagine o il contenitore Docker. Ora come pensi di incorporare questa nuova conoscenza quando lavori con contenitori e immagini Docker, magari un sistema di backup?