Comment empaqueter et transférer des images Docker d'un serveur à un autre

0
406

Si vous avez créé une image Docker sur votre machine de développement et souhaitez la déployer sur un serveur, vous pouvez utiliser un registre Docker, mais Docker dispose également d'outils pour enregistrer des images dans des fichiers et les charger sur un serveur différent.

Vous ne le faites pas&# 8217;t Besoin d'un registre de conteneurs

Habituellement, pour transférer une version d'un conteneur (appelée image) vers un serveur distant, vous utilisez un registre de conteneurs Docker. C'est de loin la meilleure méthode, c'est un point d'autorité unique, ce qui facilite la distribution des mises à jour sur plusieurs serveurs. Cela ne vous oblige pas non plus à rendre le conteneur public ; il existe de nombreux excellents registres de conteneurs privés, tels que Google’s GCR et AWS’s ECS. Le Docker Hub prend même en charge les référentiels privés. Si vous êtes simplement préoccupé par la confidentialité, passez à un registre privé et continuez à utiliser docker push et docker pull.

Cependant, pour ceux qui cherchent à le faire à l'ancienne, la CLI Docker contient des outils pour enregistrer des images dans des fichiers et les charger sur un serveur distant.

Pour enregistrer une image, vous pouvez utiliser docker save , en spécifiant un fichier de sortie, puis spécifiez un nom d'image et une balise :

docker save -o ./savedimage imagename:tag

Si vous ne spécifiez pas de balise, Docker empaquetera toutes les balises.< /p> Publicité

Cela va sérialiser et enregistrer une copie de l'image sous le fichier de sortie. L'image est stockée dans un fichier tar. Si vous souhaitez l'enregistrer en tant que tar.gz, vous pouvez omettre l'indicateur -o et rediriger la sortie vers gzip :

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

Vous pouvez ensuite transférer ce fichier et une copie scp ou FTP sur le serveur cible. Une fois qu'il est là, vous pouvez utiliser docker load pour l'importer à nouveau :

docker load -i saveimage

Cela rendra l'image disponible sur le système cible comme si vous aviez exécuté docker build . -t nom_image. Vous pouvez l'utiliser comme une image construite localement avec docker container run :

docker container run imagename