2016-04-24 12 views
1

私はドッカーのインスタンスを実行していますが、私はto save my workとしたいと思います - ドキュメントはこれを行う方法について100%明確ではないので、私はここで尋ねています。Docker:実行中のインスタンスを保存するにはどうすればいいですか?

docker run -it [public dockerhub name] 

ここで私はすべての仕事をローカルに保存して戻したいと思います。私はそれが賢明でない限り、特にドッカーハブにチェックしたくありません。

ここに私がしたことがあります。新しいドッカーのCLIタブを開き、実行中のドッカーインスタンスのIDを見つけるためにdocker psを実行しました。同じタブで、私はこれをやってみました:

docker commit <docker-id> me/myinstance 

これは私にコミットハッシュを与えました。

実行中のドッカーインスタンスを安全に終了できますか?私はそれを再び開くためにどのようなコマンドを使用しますか?コミットハッシュを格納する必要がありますか?それともdocker run -it me/myinstanceを実行できますか?

  • あなたは、あなたがコンテナに変更を加えるときあなたはdocker run <image>

を使用して、コンテナにそのイメージを実行

  • ドッカーハブから画像を引っ張っ」:docs言及として

  • +0

    yesこのコマンドを使用すると、作成したばかりの画像から新規のコンテナが作成されます。 – CodeNotFound

    +0

    @CodeNotFoundありがとうございます。そして、 'docker run -it me/myinstance'で再度実行できますか? – Richard

    答えて

    1

    変更は、特にホストファイルシステムからフォルダをマウントするかにデータを送信することによって、(アプリケーションからデータストレージを分離していない限りは、コンテナが終了し、コンテナ(コンテナアプリケーション)がステートレスでないときに失わないですコンテナの外部のデータベース)。

    変更をコンテナに保持するには、新しいコンテナ(docker run ~)を作成するのではなく、古いコンテナ(docker start ~)を開始します。

    コンテナに名前を付けると、これは簡単です。

    ie。

    docker run -it --name containerName imageName 
    

    あなたの変更は、そのコンテナに永続化されていることがわかります、あなたのコンテナ

    docker kill containerName 
    docker start containerName 
    

    にものを行います。

    コンテナをイメージとしてコミットすることもできます。コンテナは、レジストリにプッシュまたはファイルにエクスポートできます。

    0

    元のイメージを変更しないので、コンテナが停止してもこれらの変更は保持されません。あなたはコンテナに加えた変更を永続化するには、ドッカードキュメントにある例ではdocker commit <container_id>

    で新しいイメージを作成します。

    # What containers are running on my system? 
    $ docker ps 
    
    ID     IMAGE    COMMAND    CREATED 
    c3f279d17e0a  ubuntu:12.04  /bin/bash   7 days ago 
    197387f1b436  ubuntu:12.04  /bin/bash   7 days ago 
    
    # Create a new image called svendowideit/testimage, tag it as "version3" 
    $ docker commit c3f279d17e0a svendowideit/testimage:version3 
    f5283438590d 
    
    # What images do I have on my system? 
    $ docker images 
    REPOSITORY      TAG     ID 
    svendowideit/testimage   version3   f5283438590d 
    

    この方法で、あなたは、コンテナc3f279d17e0aへの変更を持続してきました新しい画像には、svendowideit/testimage:version3と呼ばれます。

    は、今すぐあなたの変更でイメージを持っているので、あなたは、コンテナの上に好きなあなたはそれを何度でも実行できます。

    $ docker run svendowideit/testimage:version3 
    

    ここでも、コンテナはステートレスです。コンテナ内で行った変更は、そのコンテナが停止すると失われます。コンテナが存在してもデータを保持する方法の1つはusing volumesです。このようにして、コンテナはホストファイルシステム内の読み書き可能なディレクトリにアクセスできます。コンテナ内で行わ

    +0

    警告: 'docker commit'は' -v'オプションでマップされていない限り、 'Dockerfile'の' VOLUME'セクションにリストされているボリュームには適用されません**注意してください。私は不満足な経験から、公式の文書のどこかに隠されていることが分かるまで話します。 – Marakai

    関連する問題