web-dev-qa-db-fra.com

Comment enregistrer un état de conteneur Docker

J'essaie d'apprendre les tenants et les aboutissants de Docker, et la perspective de sauvegarder une image me trouble. 

J'ai exécuté l'image de base d'Ubuntu, installé Anaconda Python et quelques autres choses ... alors quel est le meilleur moyen de sauvegarder mes progrès? Enregistrer, valider, exporter? 

Aucun de ceux-ci ne semble fonctionner de la même manière que VirtualBox, qui présente un fichier d’état de sauvegarde évident pour votre machine virtuelle.

15
jonabuck

La méthode habituelle consiste au moins à utiliser un docker commit : qui gèle l’état de votre conteneur dans une nouvelle image.

Remarque: Comme commenté par anchovylegend , ce n'est pas la meilleure pratique et utiliser un fichier Docker vous permet de modéliser de manière formelle le contenu de l'image et de vous permettre de reconstruire/rétablir son état initial.

Vous pouvez ensuite répertorier cette image localement avec docker images et l'exécuter à nouveau.

Exemple:

$ docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS              NAMES
c3f279d17e0a        ubuntu:12.04        /bin/bash           7 days ago          Up 25 hours                            desperate_dubinsky
197387f1b436        ubuntu:12.04        /bin/bash           7 days ago          Up 25 hours                            focused_hamilton

$ docker commit c3f279d17e0a  svendowideit/testimage:version3

f5283438590d

$ docker images

REPOSITORY                        TAG                 ID                  CREATED             SIZE
svendowideit/testimage            version3            f5283438590d        16 seconds ago      335.7 MB

Après cela, si vous avez déployé un serveur de registre , vous pouvez envoyer votre image sur ce serveur.

18
VonC

Utilisez un fichier Docker pour ce type de scénario.

Un exemple de cas pour une image Ubuntu avec MongoDB:

FROM ubuntu
MAINTAINER Author name

RUN apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
RUN echo "deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist    10gen" | tee -a /etc/apt/sources.list.d/10gen.list
RUN apt-get update
RUN apt-get -y install apt-utils
RUN apt-get -y install mongodb-10gen

#RUN echo "" >> /etc/mongodb.conf

CMD ["/usr/bin/mongod", "--config", "/etc/mongodb.conf"]

Voir également Meilleures pratiques pour l'écriture de Dockerfiles.

1
vanishka