Come copiare/spostare un contenitore Docker su un altro host

Come copiare/spostare un contenitore Docker su un altro host
Fotografia di una persona che lavora alla scrivania di un computer.

Poiché i contenitori Docker sono piccole scatole di software, puoi facilmente copiarli e spostarli da un computer all’altro. È possibile che tu abbia lavorato su un’istanza Docker sul tuo computer locale e abbia deciso di spostarla su un server più potente. O forse vuoi semplicemente distribuire il tuo contenitore personalizzato su più computer, “copiarlo e incollarlo”. Altre volte, potresti essere insoddisfatto di un fornitore di cloud computing e voler passare a uno diverso. Qui ti mostriamo come spostare l’immagine del contenitore Docker esistente e i volumi di dati da un host Linux a un altro.

Salva immagine contenitore dall’host di origine

Inizia elencando i contenitori Docker disponibili in esecuzione sul tuo sistema. Nel mio caso, voglio esportare il mio contenitore Docker Nginx su una nuova macchina:

Un terminale che evidenzia i contenitori Docker disponibili per un sistema.

Trova il contenitore che vuoi copiare, quindi arresta l’istanza:

Un terminale che mostra l'output del comando docker stop.

Un contenitore Docker è costituito da un’immagine iniziale generica. Nel tempo, aggiungi le tue modifiche a questa immagine di base. I processi in esecuzione all’interno del contenitore potrebbero anche salvare i propri dati o apportare altre modifiche. Per preservare tutto ciò, conferma lo stato corrente del tuo contenitore in una nuova immagine:

Un terminale che mostra l'output del comando docker commit che crea una nuova immagine da quella attualmente in esecuzione.

Nota che se l’istanza è attualmente in esecuzione, questa azione la metterà in pausa mentre i suoi contenuti vengono salvati. Se questo è un problema, puoi evitare questa pausa inserendo docker commit -p=false NAME_OF_INSTANCE mycontainerimageinvece . Tuttavia, non farlo a meno che non sia assolutamente necessario. Le probabilità di creare un’immagine con dati incoerenti/incompleti aumentano in questo caso.

Ora salva l’immagine del contenitore Docker appena committata in un file di archivio:

Utilizza il tuo metodo di trasferimento file preferito e copia il tuo. tar nell’host in cui desideri spostare il contenitore Docker. Ad esempio, il seguente comando trasferisce la mia immagine Nginx Docker utilizzando scp:

Esportazione di un volume Docker dal contenitore

Uno degli svantaggi del salvataggio di un’immagine Docker è che non include gli accessori Docker che hai configurato insieme al tuo contenitore. Ciò include qualsiasi mount di associazione di rete e i volumi che hai creato per archiviare i tuoi dati persistenti.

Per esportare correttamente il tuo volume di dati, installa prima Git sul tuo computer locale:

Esegui il comando seguente per scaricare lo script di esportazione del volume per Docker:

Assicurati che lo script di esportazione disponga dei bit di autorizzazione corretti, quindi copialo nella cartella “/usr/local/bin:” del tuo computer.

Verifica se lo script funziona correttamente, quindi estrai tutti i volumi associati al contenitore:

Un terminale che mostra il processo di backup di tutti i volumi di dati associati a un contenitore Docker.

Invia i file del volume Docker appena archiviati al tuo computer remoto:

Carica l’immagine del contenitore sull’host di destinazione

Accedi al tuo host remoto, quindi esegui il seguente comando per caricarlo sul demone Docker della tua macchina remota:

Usalo docker createper reinizializzare l’immagine del tuo contenitore Docker con i suoi flag di esecuzione originali dalla tua macchina sorgente. Ad esempio, il mio contenitore Docker Nginx aveva originariamente la porta 80 mappata sulla porta 8080 della mia macchina host:

Esegui il contenitore Docker appena importato:

Verifica che l’immagine importata funzioni correttamente elencando tutti i contenitori attivi nel sistema:

Un terminale che mostra la stessa immagine del contenitore Docker in esecuzione su un sistema diverso.

Importazione di un volume Docker nel contenitore

Per importare un file. tar Docker volume, scarica prima Git sul tuo nuovo host:

Proprio come con il tuo sistema originale, scarica lo script di supporto docker-volume.sh, imposta i suoi bit di autorizzazione su “execute”, quindi copialo nella directory “/usr/local/bin” della tua nuova macchina.

Un terminale che mostra il processo di ottenimento e installazione dello script Docker Volume per il backup dei dati associati ai contenitori.

Crea un nuovo contenitore Docker utilizzando il file immagine esportato:

Esegui lo script docker-volume.sh con il tuo file tar originale per caricarlo sul demone Docker del tuo nuovo sistema:

Avvia il tuo nuovo contenitore Docker eseguendo il comando seguente:

Verifica se il tuo contenitore sta caricando correttamente il tuo volume esaminando i suoi dati di configurazione interni:

Un terminale che evidenzia i dati del volume importato nella nuova macchina.

Trasferisci l’immagine senza creare un file

A volte potresti voler saltare la creazione di un mycontainerimage.tar.gzfile. Forse non hai abbastanza spazio su disco poiché il contenitore contiene molti dati. Puoi salvare, trasferire e caricare l’immagine sull’host di destinazione con un solo comando. Dopo aver eseguito il docker commitcomando discusso sopra, puoi utilizzare questo:

Dovrebbe funzionare anche da Windows, poiché ora ha un client SSH integrato (PuTTY non è più necessario).

Continua con il docker createcomando che si applica alla tua situazione.

Un terminale che mostra il processo di creazione di un nuovo contenitore Docker dopo aver spostato la sua immagine tramite un canale SSH.

Infine, avvia il contenitore Docker appena importato eseguendo docker startseguito dal nome del contenitore.

Un terminale che mostra il processo di avvio di un nuovo contenitore e ne conferma il corretto funzionamento.

Utilizzo di Docker Compose per spostare un’intera distribuzione Docker

Con il plug-in Compose, Docker consente di creare, configurare ed eseguire programmi complessi senza preoccuparsi dello stack software sottostante del server. Ciò, a sua volta, consente di creare distribuzioni di applicazioni riproducibili su diversi sistemi Linux.

Per iniziare la migrazione della configurazione Docker esistente su Docker Compose, assicurati innanzitutto che il relativo plug-in sia attualmente nel tuo sistema:

Crea una nuova cartella nella tua home directory per l’installazione di Docker Compose:

Utilizza il tuo editor di testo preferito per creare un file “docker-compose.yml” per la tua applicazione:

Incolla il seguente blocco di codice all’interno del tuo file Compose, quindi modificalo in base alle tue esigenze specifiche:

Salva il nuovo file Compose, quindi esegui il seguente comando per avviarlo:

Infine, verifica se la distribuzione di Compose funziona correttamente. Nel mio caso, testerò il mio contenitore Docker Nginx aprendo un browser Web e andando su “localhost:8080”.

Uno screenshot che mostra il contenitore Docker Nginx importato che funziona correttamente sul suo nuovo host macchina.

Imparare come copiare e spostare il tuo contenitore Docker su altri host Linux è solo uno dei pochi compiti che puoi svolgere con la tua macchina. Esplora questo meraviglioso mondo dell’auto-hosting installando un server Minecraft su Linux usando Docker.

Credito immagine: Max Duzij tramite Unsplash . Tutte le modifiche e gli screenshot sono di Ramces Red.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *