1. ホーム
  2. docker

[解決済み] Dockerでは、コンテナとイメージはどう違うのですか?[重複しています]。

2022-03-17 06:57:09

質問

Dockerのコンテナとイメージの違いは何ですか?では Dockerチュートリアルを開始する この2つの用語はどちらも使われていますが、違いがわかりません。

どなたか教えてください。

解決方法は?

イメージは、生きているコンテナの凍結された不変のスナップショットです。コンテナとは、あるイメージの実行中(または停止中)のインスタンスです。

まずは'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-foo と共に表示されます。 ubuntu の標準画像でスタートしました。