2017-06-11 14 views
5

私はDockerの機能を学びたいと思っています。画像を保存するという見通しが混乱しています。Dockerコンテナの状態を保存するには?

私は基本的なUbuntuイメージを実行し、Anaconda Pythonと他のいくつかのものをインストールしました...だから、私の進歩を保存する最良の方法は何ですか?保存、コミット、エクスポート?

仮想マシンと同じ方法で動作するように見えるものはありません。これは、仮想マシンに明白なセーブステートファイルを提示します。

答えて

5

普通の方法は少なくともdocker commitです:これは、コンテナの状態を新しいイメージに固定します。

注意:anchovylegendによってcommentedと表示されていますが、これはベストプラクティスではありません.Dockerfileを使用すると、イメージコンテンツを正式にモデル化し、初期状態を再構築/再現できるようになります。

その画像をdocker imagesでローカルにリストして、再度実行することができます。

例:その後

$ 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 

if you have deployed a registry serverは、サーバーを言ったために、あなたのイメージをプッシュすることができます。

+0

ファイル参照、このアプローチは、ドッカーコミュニティによって貧しい練習考えられています。移動する最善の方法は、Dockerfileを使用することです。 – AnchovyLegend

+1

@AnchovyLegend私はあなたのコメントを含む答えを編集し、それを明確にすることに同意し、編集しました。 – VonC

+0

dockerfileはプログラムのインストールを再現しますが、例えばデータベースにデータをロードすると、dockerfileはその状態を正しく保存しません。 – chrismarx

0

この種のシナリオでは、ドッカーファイルを使用してください。 MongoDBを持つUbuntuのイメージのため

例の場合:また

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"] 

これは動作しますがドッカーを書くためのベストプラクティスがhttps://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/

関連する問題