2017-06-11 15 views
5

Ich versuche, die Details von Docker zu lernen, und ich bin verwirrt von der Aussicht, ein Bild zu speichern.So speichern Sie einen Docker-Container-Status?

Ich lief das grundlegende Ubuntu-Image, installierte Anaconda Python und ein paar andere Dinge ... also, was ist der beste Weg, um meinen Fortschritt zu speichern? Speichern, Festschreiben, Exportieren?

Keiner von diesen scheint auf die gleiche Weise wie Virtual Box zu arbeiten, die eine offensichtliche save-state-Datei für Ihre virtuelle Maschine darstellt.

Antwort

5

Der übliche Weg ist zumindest durch eine docker commit: das wird den Zustand Ihres Behälters in ein neues Bild einfrieren.

Hinweis: Als commented von anchovylegend ist dies nicht die beste Vorgehensweise. Mithilfe einer Dockerfile können Sie den Bildinhalt formal modellieren und sicherstellen, dass Sie den ursprünglichen Zustand wiederherstellen/reproduzieren können.

Sie können dieses Bild dann lokal mit docker images auflisten und es erneut ausführen.

Beispiel:

$ 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 

Danach, if you have deployed a registry server können Sie Ihr Bild drücken, um den Server.

+0

Datei Während dies funktionieren wird, ist dieser Ansatz eine schlechte Praxis von der Gemeinde Docker betrachtet. Der beste Weg ist die Verwendung einer Dockerdatei. – AnchovyLegend

+1

@AnchovyLegend Ich stimme zu und habe die Antwort bearbeitet, um Ihren Kommentar aufzunehmen und das klarzustellen. – VonC

+0

Die Docker-Datei reproduziert die Installation von Programmen, aber was ist, wenn Sie zum Beispiel Daten in die Datenbank laden, wird die Docker-Datei diesen Zustand in keiner Weise speichern? – chrismarx

0

Verwenden Sie eine Andockdatei für diese Art von Szenarien.

Beispielfall für Ubuntu Bild mit 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"] 

auch Best Practices sehen für das Schreiben ein Docker https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/

Verwandte Themen