Come copiare/spostare un contenitore Docker su un altro host
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:
Trova il contenitore che vuoi copiare, quindi arresta l’istanza:
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:
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 mycontainerimage
invece . 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:
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 create
per 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:
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.
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:
Trasferisci l’immagine senza creare un file
A volte potresti voler saltare la creazione di un mycontainerimage.tar.gz
file. 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 commit
comando 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 create
comando che si applica alla tua situazione.
Infine, avvia il contenitore Docker appena importato eseguendo docker start
seguito dal nome del contenitore.
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”.
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