ベストアンサー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-foo
ubuntu