Je me demande où les images de Docker sont exactement stockées dans mon ordinateur hôte local. Puis-je partager mon image Docker sans utiliser le Docker-Hub
ou un Dockerfile
mais le "vrai" Docker-Image? Et que se passe-t-il exactement lorsque je "pousse" mon image Docker sur Docker-Hub?
Les images Docker sont stockées sous forme de couches de système de fichiers. Chaque commande du fichier Docker crée une couche. Vous pouvez également créer des couches en utilisant docker commit
à partir de la ligne de commande après quelques modifications (via docker run
probablement).
Ces couches sont stockées par défaut sous /var/lib/docker
. Bien que vous puissiez (théoriquement) choisir des fichiers à partir de là et les installer sur un autre serveur Docker, il est probablement déconseillé de jouer avec la représentation interne utilisée par Docker.
Lorsque vous poussez votre image, ces couches sont envoyées au registre (le registre de docker hub, par défaut… sauf si vous marquez votre image avec un autre préfixe de registre) et y sont stockées. En poussant, l'identifiant de couche est utilisé pour vérifier si vous avez déjà la couche localement ou si elle doit être téléchargée. Vous pouvez utiliser docker history
pour voir quels calques (autres images) sont utilisés (et, dans une certaine mesure, quelle commande a créé le calque).
En ce qui concerne les options permettant de partager une image sans pousser dans le registre du docker hub, vos meilleures options sont les suivantes:
docker save
une image ou docker export
un conteneur. Cela produira un fichier tar sur la sortie standard, de sorte que vous aimerez faire quelque chose comme docker save 'dockerizeit/agent' > dk.agent.latest.tar
. Ensuite, vous pouvez utiliser docker load
ou docker import
dans un autre hôte.
Hébergez votre propre registre privé. - Obsolète, voir les commentaires Voir le image du registre de docker . Nous avons construit un registre sauvegardé sur s que vous pouvez démarrer et arrêter à votre guise (tous les états sont conservés dans le compartiment s3 de votre choix), ce qui est simple à configurer. C’est aussi un moyen intéressant de regarder ce qui se passe lorsqu’on passe à un registre.
Utilisez un autre registre comme quay.io (je ne l’ai personnellement pas essayé), bien que tout ce que vous avez avec le concentrateur de docker s’appliquera probablement ici aussi.
Sur la base de ce blog , vous pouvez partager une image de menu fixe sans registre de menu fixe en exécutant:
docker save --output latestversion-1.0.0.tar dockerregistry/latestversion:1.0.0
Une fois cette commande terminée, vous pouvez copier l'image sur un serveur et l'importer comme suit:
docker load --input latestversion-1.0.0.tar
Si vous ne souhaitez pas utiliser le concentrateur Docker lui-même, vous pouvez héberger votre propre référentiel Docker sous Artifactory de JFrog:
https://www.jfrog.com/confluence/display/RTF/Docker+Repositories
qui fonctionnera ensuite sur vos propres serveurs.
D'autres fournisseurs d'hébergement sont disponibles, par exemple CoreOS:
http://www.theregister.co.uk/2014/10/30/coreos_enterprise_registry/
qui a acheté quay.io
L'envoi d'une image de menu fixe à un serveur distant peut être effectué en 3 étapes simples:
docker save -o <path for created tar file> <image name>
Localement, utilisez scp pour transférer . Tar vers distant
Sur le serveur distant, chargez l'image dans le menu fixe:
docker load -i <path to docker image tar file>