Come impacchettare e trasferire immagini Docker da un server a un altro

0
55

Se hai creato un'immagine Docker sul tuo computer di sviluppo, e vuoi distribuirlo su un server, potresti usare un registro Docker, ma Docker ha anche strumenti per salvare le immagini su file e caricarle su un server diverso.

Non hai bisogno di un registro contenitori

Di solito, per trasferire una build di un container (chiamata immagine) su un server remoto, si utilizza un registro container Docker. Questo è di gran lunga il metodo migliore—è un singolo punto di autorità, che semplifica la distribuzione degli aggiornamenti su più server. Anche questo non richiede di rendere pubblico il contenitore; ci sono molti ottimi registri di container privati, come il GCR di Google e l'ECS di AWS. L'hub Docker supporta anche i repository privati. Se sei semplicemente preoccupato per la privacy, passa a un registro privato e continua a utilizzare docker push e docker pull.

Tuttavia, per coloro che desiderano farlo alla vecchia maniera, la Docker CLI contiene alcuni strumenti per salvare le immagini su file e caricarle su un server remoto.

Per salvare un'immagine, puoi utilizzare il salvataggio mobile , specificando un file di output, quindi specificando un nome e un tag per l'immagine:

docker save -o ./savedimage imagename:tag

Se non specifichi un tag, Docker impacchetta tutti i tag.< /p> Annuncio

Questo serializzerà e salverà una copia dell'immagine nel file di output. L'immagine viene archiviata come file tar. Se desideri salvarlo come tar.gz, puoi omettere il flag -o e reindirizzare l'output a gzip:

docker save imagename:tag | gzip > saveimage.tar.gz

Puoi quindi portare questo file e la copia scp o FTP sul server di destinazione. Una volta che è lì, puoi utilizzare il caricamento della finestra mobile per importarlo di nuovo:

caricamento della finestra mobile -i saveimage

Questo renderà l'immagine disponibile sul sistema di destinazione come se avessi eseguito docker build . -t nomeimmagine. Puoi usarlo proprio come un'immagine creata localmente con il container docker run:

il container docker run imagename