🖥

Docker | 既存イメージの CMD を確認する ( $ docker inspect )

2023/08/26に公開

問題

Dockerfile でいうところの CMDで何が走るかを、既存のイメージで確認したい。

Dockerfile
CMD ["/bin/sh"]

解決

docker inspect で可能。

$ docker inspect [イメージ名] --format='{{.Config.Cmd}}'

例:

$ docker inspect alpine --format='{{.Config.Cmd}}'
[/bin/sh]

このコマンドが面倒だったら grep しても良い。

$ docker inspect alpine | grep CMD
"CMD [\"/bin/sh\"]"

色んなイメージの CMD を見てみる

alpine

bashさえ入っていない。shが起動する。

$ docker inspect alpine --format='{{.Config.Cmd}}'
[sh]

ubuntu

bashが起動する。

$ docker inspect ubuntu --format='{{.Config.Cmd}}'
[/bin/bash]

rails

pry が起動する。

$ docker inspect rails --format='{{.Config.Cmd}}'
[irb]

python

python が起動する。

$ docker inspect python --format='{{.Config.Cmd}}'
[python3]

インタラクティブモード

それぞれインタラクティブモードで実行すると、CMDで指定されたものが起動するのが分かる。

sh

$ docker run -it alpine
/ #

bash

$ docker run -it ubuntu

root@41490d5a88ce:/#

pry

$ docker run -it rails

irb(main):001:0> 

python

$ docker run -it python

Python 3.6.1 (default, May 11 2017, 22:14:44)
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

CMD の書き換え

よく例で出て来る $ docker run -it [イメージ名] /bin/bash という書き方は、CMDを書き換えて実行することが出来る。

alpine

そもそも /bin/bash さえ入ってないので怒られる。

$ docker run -it alpine /bin/bash
docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"/bin/bash\": stat /bin/bash: no such file or directory".

ubuntu

もともと /bin/bash なので動作変わらず。

$ docker run -it ubuntu /bin/bash
root@3ff997da5e74:/#

rails

pry ではなくbashで接続するようになった。

$ docker run -it rails /bin/bash
root@e0494a68300d:/#

python

python ではなくbashで接続するようになった。

$ docker run -it python /bin/bash
root@6892c2322999:/#

参考

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2017-05-25

Discussion