Si vous avez créé une image Docker sur votre machine de développement et que vous 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 autre serveur.
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. Il s’agit d’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, comme celui de Google GCR et AWS 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 push docker
et tirer docker
.
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 enregistrer
, en spécifiant un fichier de sortie, puis spécifiez un nom d'image et une balise:
docker save -o ./savedimage nom_image: balise
Si vous ne spécifiez pas de balise, Docker conditionnera toutes les balises.
Cela sérialisera et enregistrera une copie de l'image sous le fichier de sortie. L'image est stockée sous forme de fichier tar. Si vous souhaitez l'enregistrer en tant que tar.gz
, vous pouvez omettre -o
drapeau et dirigez la sortie vers gzip
:
docker enregistrer le nom de l'image: tag | gzip> savedimage.tar.gz
Vous pouvez ensuite prendre ce fichier et scp
ou copie FTP sur le serveur cible. Une fois qu'il est là, vous pouvez utiliser charge docker
pour l'importer à nouveau:
docker load -i savedimage
Cela rendra l'image disponible sur le système cible comme si vous aviez exécuté construction de docker. -t nom_image
. Vous pouvez l'utiliser comme une image construite localement avec exécution du conteneur Docker
:
conteneur de docker exécuter imageename