2017-05-07 10 views
0

ファイルシステムの更新によって変更された複数のドッカーコンテナがあります。共有ドッカーコンテナ

docker pull image 
docker run image 
docker exec -it <image_id> bash 
'make changes to running docker container image 
exit running docker container 
docker commit <new container name> 

私はdocker save...を使用することができますコンテナを保存すると、コンテナのローカルコピーが保存されます。これらのアップデートはdockerFile

への変更を経て表現されていません。このプロセスのための擬似コードです。レジストリにプッシュできますか?または、レジストリはイメージ用であり、コンテナ用ではありませんか?

カスタムドッカーコンテナを共有して.tarファイルとしてエクスポートしてから別のマシンに再インポートする方法はありますか?

答えて

3

コンテナを共有することは決してありません。あなたは常にイメージを共有します。すでにコンテナを保存しませんを使用しましたdocker commitコマンドは、それがそのコンテナのファイルシステムdocumentation)から新しいイメージを作成します。

は、コンテナの変化から新しいイメージを作成

使用

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] 

docker commitによって作成されたイメージは、他のイメージと同じように扱えます(新しいコンテナを作成し、レジストリにプッシュするなど)。 単に既存のコンテナをコミットして新しいイメージを作成し、あなたはどこでもあなたが望むそのイメージをプッシュすることができます。

$ docker commit <some-running-container> yourusername/new-image 
$ docker push yourusername/new-image 

レジストリを使用しない場合は、に既存のイメージをエクスポートするdocker saveコマンドを使用しますファイル、およびdocker loadコマンドを使用してイメージを再度インポートします。

$ docker commit <some-running-container> yourusername/new-image 
$ docker save yourusername/new-image > new-image.tar 
$ # On another machine: 
$ docker load < new-image.tar 
+0

ドッカーコンテナが通常1GBを超えるため、既存のコンテナを少し変更してコンテナをプッシュすると、経済的でないと判断され、サポートされないと誤って認識しました。この前提により、dockerHubにdockerコンテナをコミットすることは、dockerFileを介してのみであると信じられました。 –

0

コンテナを共有するためのレジストリが存在するかどうかはわかりません。ある場合でも、それはドッカーの哲学に反します。イメージの共有に失敗してもコンテナは成功するというユースケースを考えることはできません。イメージは共有される(プラットフォームに依存しない)ためのものであり、コンテナ(プラットフォーム固有)はそれらのイメージから作成されます。