Docker では、コンテナとイメージの違いは何ですか? [重複] 質問する

Docker では、コンテナとイメージの違いは何ですか? [重複] 質問する

Dockerにおけるコンテナとイメージの違いは何でしょうか?Dockerチュートリアルを始めるこれらの用語は両方とも使用されていますが、違いがわかりません。

誰か教えていただけませんか?

ベストアンサー1

イメージは、ライブ コンテナの凍結された不変のスナップショットです。コンテナは、何らかのイメージの実行中 (または停止中) のインスタンスです。

「ubuntu」というベースイメージから始めます。ubuntu イメージ内で bash を対話的に実行し、ファイルを作成しましょう。-iおよび-tフラグを使用して、対話型の bash シェルを作成します。

$ docker run -i -t ubuntu  /bin/bash
root@48cff2e9be75:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@48cff2e9be75:/# cat > foo
This is a really important file!!!!
root@48cff2e9be75:/# exit

イメージを終了して再起動したときに、そのファイルが残っているとは思わないでください。中断した場所ではなく、以前開始したときとまったく同じ定義された状態から再起動します。

$ docker run -i -t ubuntu  /bin/bash
root@abf181be4379:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@abf181be4379:/# exit

ただし、現在は実行されていないコンテナには状態があり、イメージに保存 (コミット) できます。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED              STATUS                          PORTS                      NAMES
abf181be4379        ubuntu:14.04        /bin/bash              17 seconds ago       Exited (0) 12 seconds ago                                  elegant_ardinghelli    
48cff2e9be75        ubuntu:14.04        /bin/bash              About a minute ago   Exited (0) 50 seconds ago                                  determined_pare        
...

ファイルを作成したコンテナ ID 48cff2e9be75 からイメージを作成しましょう。

$ docker commit 48cff2e9be75 ubuntu-foo
d0e4ae9a911d0243e95556e229c8e0873b623eeed4c7816268db090dfdd149c2

これで、非常に重要なファイルを含む新しいイメージができました。

$ docker run ubuntu-foo /bin/cat foo
This is a really important file!!!!

コマンドを試してください。最初に使用した標準イメージとともに、docker images新しいイメージがリスト表示されます。ubuntu-fooubuntu

おすすめ記事