web-dev-qa-db-fra.com

Comment prendre des instantanés de conteneur dans docker

Comment pouvons-nous prendre des instantanés de conteneur et les charger dans un autre hôte de menu fixe? J'aime connaître la capture de conteneur et non pour l'image. Je suis confondu avec les commandes d'exportation/importation et de sauvegarde/chargement dans docker. J'aime avoir plus de clarté ou de doc pour les comprendre plus profondément.

L'instantané pour avoir les métadonnées pour exécuter le conteneur et les toits. L'état exact d'être présent dans l'autre hôte de docker. Une aide dans cette direction serait formidable.

50
tanmally

Le commande docker commit prend un instantané de votre conteneur. Cet instantané est une image que vous pouvez placer sur un référentiel (privé) pour pouvoir le récupérer sur un autre hôte.

Une option qui n'utilise pas d'image (ce que vous dites vouloir éviter) est bien enregistrer et charger . Selon la documentation, cela enregistre votre conteneur avec toutes les couches de fichiers. Donc, si vous avez une configuration avec des conteneurs enfants tels que Ubuntu > JavaJDK > Elasticsearch > my-container , les 4 couches de fichiers entrent dans Là. Mais vous pouvez avoir les 3 premières couches déjà présentes sous forme d'images sur l'autre hôte, auquel cas save représente beaucoup de travail supplémentaire. Ensuite, vous pouvez utiliser export et import , qui, selon la documentation, n'exporte que la couche de fichiers supérieure (autrement dit, le conteneur, et non les images). dessous).

Plus d'informations sur les images, les conteneurs, les couches de fichiers, etc. sont disponibles dans documentation officielle (exemple: système de fichiers .

41
qkrijger

Si vous recherchez un "état exact", y compris l'état d'exécution, vous devrez peut-être utiliser CRIU (point de contrôle).

Avec une machine hôte Linux, Docker peut utiliser CRIU pour enregistrer l’état d’exécution du conteneur. CRIU est toujours "expérimental", et vous pouvez voir toutes les commandes possibles (après avoir activé le mode expérimental) en lançant:

docker checkpoint

Vous pouvez utiliser le --save-dir option pour mettre le point de contrôle dans le répertoire de votre choix.

Vous pouvez alors utiliser

docker start --checkpoint (checkpoint name) --checkpoint-dir (checkpoint directory)

pour restaurer le point de contrôle.

Si vous déplacez des serveurs, vous devrez peut-être emporter l'image avec vous.

Vous pouvez en savoir plus sur la documentation: https://docs.docker.com/engine/reference/commandline/checkpoint/

7
dGRAMOP