#author("2021-06-04T05:28:24+09:00","default:ryuichi","ryuichi")
#author("2021-06-04T05:29:18+09:00","default:ryuichi","ryuichi")
* コンテナを元にイメージを作る [#m37b056d]
** 1. ベースになるUbuntu 20.04をPULLする [#j49dd571]
#shell(){{
$ docker pull ubuntu:20.04
20.04: Pulling from library/ubuntu
345e3491a907: Pull complete
57671312ef6f: Pull complete
5e9250ddb7d0: Pull complete
Digest: sha256:adf73ca014822ad8237623d388cedf4d5346aa72c270c5acc01431cc93e18e2d
Status: Downloaded newer image for ubuntu:20.04
docker.io/library/ubuntu:20.04
}}
- Ubuntu:20.04をPULLする
** 2. Ubutu 20.04のコンテナを起動してカスタマイズする [#v3620196]
#shell(){{
$ docker run --name my-ubuntu-2004 -it ubuntu:20.04 /bin/bash # (1)
root@cb61f16f968d:/# echo hello > /tmp/test.txt # (2)
root@cb61f16f968d:/# exit # (3)
$ docker ps -a # (4)
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cb61f16f968d ubuntu:20.04 "/bin/bash" About a minute ago Exited (0) 36 seconds ago my-ubuntu-2004
}}
- (1) コンテナをmy-ubuntu-2004というコンテナ名で起動して、コンテナの中にbashシェルでログインして、
- (2) コンテナ内でカスタマイズする。ここでは/tmp/test.txtというファイルを作成している
- (3) コンテナからexitして出る
- (4) このコンテナのIDを確認する。ここでは cb61f16f968d
** 3. コンテナからイメージを作成する [#rcbaad33]
#shell(){{
$ docker commit cb61f16f968d ubuntu:my-ubuntu-2004
sha256:b009d9ccd5bf3ab2ad92c338ede72b183e519eb1daed0f26fb668981374b05df
}}
- 上で確認したコンテナIDを指定して、COMMITする。ここではイメージ名 ubunu、タグ名 my-ubuntu-2004 としている
** 4. できたイメージからコンテナを起動して、コンテナの内容を確認する [#k06be50b]
#shell(){{
$ docker run --name my-container -it -d ubuntu:my-ubuntu-2004 /bin/bash # (1)
ff6fa3a8558e0a8095c60ee052b819045fd19a89a1901d1430700c1e4f91ee40
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff6fa3a8558e ubuntu:my-ubuntu-2004 "/bin/bash" 5 seconds ago Up 5 seconds my-container
$ docker exec my-container /usr/bin/cat /tmp/test.txt # (2)
hello
}}
- (1) 上で作ったイメージ ubuntu:my-ubuntu-2004 を指定してコンテナを起動。ここでは確認作業しやすいように-it -dでbashが終了しないようにしている
- (2) コンテナに対して'''cat /tmp/test.txt'''を実行して、期待通りにhelloというカスタマイズした内容を確認
** 参考 [#rdd57a53]
- https://www.scalyr.com/blog/create-docker-image/
- https://docs.docker.jp/engine/reference/commandline/commit.html
- https://docs.docker.jp/engine/reference/commandline/run.html