コンテナを使用する際,そのコンテナ内で定義されているENV
やCMD
などを知りたい場合が多々あります.作成元のDockerfileを読み解くことでこれらの情報を得ることもできますが,すでにコマンドが用意されています.
コンテナ内の情報は,docker inspect
コマンドで確認できます.
特に知りたい情報は,
- ENV
- CMD
- ENTRYPOINT
- WORKDIR
- EXPORSE
などでしょう.
基本構文は下記のとおりです.
docker inspect -f <format> <IMAGE|CONTAINER>
formatに関して対応表を作ると,次のようになります.
State | 変数 |
---|---|
ENV | .Config.Env |
CMD | .Config.Cmd |
ENTRYPOINT | .Config.Entrypoint |
WORKDIR | .Config.WorkingDir |
EXPOSE | .Config.ExposedPort |
目次
使い方
ここでは,よく使用されるコンテナイメージであるnginxを例題として使用します.
ENV
docker inspect -f "{{.Config.Env}}" nginx:latest
[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin NGINX_VERSION=1.23.2 NJS_VERSION=0.7.7 PKG_RELEASE=1~bullseye]
ENVは複数与えられるため,そのまま表示すると読みにくくなります.
sed
やawk
により読みやすく出力することができます.
docker inspect -f "{{.Config.Env}}" nginx:latest | awk '{print substr($0, 2, length($0)-2)}' | sed 's/ /\n/g'
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
NGINX_VERSION=1.23.2
NJS_VERSION=0.7.7
PKG_RELEASE=1~bullseye
EXPOSE
docker inspect -f "{{.Config.ExposedPorts}}" nginx:latest
map[80/tcp:{}]
すべての情報
これまで,-f
でほしい情報を指定していましたが,すべての情報を得る場合は下記コマンドでできます.
docker inspect nginx:latest
[
{
"Id": "sha256:76c69feac34e85768b284f84416c3546b240e8cb4f68acbbe5ad261a8b36f39f",
"RepoTags": [
"nginx:latest"
],
"RepoDigests": [
"nginx@sha256:943c25b4b66b332184d5ba6bb18234273551593016c0e0ae906bab111548239f"
],
"Parent": "",
"Comment": "",
"Created": "2022-10-25T10:23:08.612298023Z",
"Container": "783c85ff89f13f3b8df2f85ff9a8c0967600272c4da75f18023c75713d64785f",
"ContainerConfig": {
"Hostname": "783c85ff89f1",
"Domainname": "",
...