Dockerを使っていると、次のような疑問を持つことはありませんか?
- このDockerイメージはどんな設定で作られているんだろう?
ENTRYPOINTやCMDには何が設定されている?- どのポートが
EXPOSEされている? - 環境変数(
ENV)は?
そんなときに活躍するのがdocker image inspectコマンドです。
docker image inspectとは?
docker image inspectはDockerイメージの詳細情報(メタデータ)を確認するためのコマンドです。
イメージの中身(ファイル一覧)を見るコマンドではなく、イメージが「どういう設定で作られているか」を確認するためのコマンドになります。
docker image inspectは、次のような場面でよく使われます。
docker image inspectが使われる場面
- イメージの構成を確認したいとき
- 環境変数(
ENV)や作業ディレクトリ(WORKDIR)を確認したい
- 環境変数(
- コンテナ起動時の動作を調べたいとき
ENTRYPOINTやCMDの設定を確認したい
- 公開ポートを確認したいとき
EXPOSEでどのポートが指定されているかを調べたい
- イメージの作成日時を確認したいとき
- 古いイメージかどうかを判断したい
docker image inspectで分かること
docker image inspectを使うと、次のような情報が確認できます。
- イメージID
- 作成日時
- ベースイメージ情報
- レイヤー構成
- 環境変数(
ENV) - 作業ディレクトリ(
WORKDIR) EXPOSEされているポートENTRYPOINT/CMD- OS / アーキテクチャ
つまり、「Dockerfileに書かれている内容 + Dockerが内部で管理している情報」をすべて確認できます。
docker image inspectの基本構文
docker image inspectの構文を以下に示します。
docker image inspectの構文
docker image inspect [オプション] <イメージ名またはイメージID>例えば、nginx:latestのDockerイメージの設定を確認する場合、以下のコマンドを実行します。
docker image inspect nginx:latestdocker image inspectを実際に実行してみる
それでは、実際に動かしながらdocker image inspectについて学んでみましょう。ここでは、nginx:latestのDockerイメージの設定を確認するために以下のコマンドを実行します。
# nginx:latestイメージを pull
docker image pull nginx:latest
# nginx:latestイメージの詳細情報を表示
docker image inspect nginx:latestこのコマンドを実行すると、JSON形式で大量の情報が出力されます。
[
{
"Id": "sha256:fb01117203ff38c2f9af91db1a7409459182a37c87cced5cb442d1d8fcc66d19",
"RepoTags": [
"nginx:latest"
],
"RepoDigests": [
"nginx@sha256:fb01117203ff38c2f9af91db1a7409459182a37c87cced5cb442d1d8fcc66d19"
],
"Comment": "buildkit.dockerfile.v0",
"Created": "2025-12-09T22:51:13.902320549Z",
"Config": {
"ExposedPorts": {
"80/tcp": {}
},
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NGINX_VERSION=1.29.4",
"NJS_VERSION=0.9.4",
"NJS_RELEASE=1~trixie",
"PKG_RELEASE=1~trixie",
"DYNPKG_RELEASE=1~trixie"
],
"Entrypoint": [
"/docker-entrypoint.sh"
],
"Cmd": [
"nginx",
"-g",
"daemon off;"
],
"Labels": {
"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
},
"StopSignal": "SIGQUIT"
},
"Architecture": "amd64",
"Os": "linux",
"Size": 59795293,
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:77a2b55fbe8b9984ce0af3ffc0b0ab62507668e63306ec161a585e587a3eb164",
"sha256:20cf308e6957f546aeb5c3358b908dde65f85d4c3e321a1306bfb2a5002b0147",
"sha256:69f56ce8c461dc57973b448f1a17aacfa5bc674b8e23f709d58b5fd2a7e6e6f8",
"sha256:6898c33749d555cdd3df4ba0279a08a58e3b8faaa80bcf76ca71f35ed87e5e0b",
"sha256:6e32bc56a7253358b6292d5b9e9d473397818ccebaec6edd88d20c7ab508fa4e",
"sha256:08ba9962589fcdea2592d16bf47a4c299711e9e394b90bf11a830f3b9c9fa580",
"sha256:8921786c2de3800947893b21f0585eeabc26f7f5a486de5d0ee085596d16d0cc"
]
},
"Metadata": {
"LastTagTime": "2025-12-22T05:18:20.801350755Z"
},
"Descriptor": {
"mediaType": "application/vnd.oci.image.index.v1+json",
"digest": "sha256:fb01117203ff38c2f9af91db1a7409459182a37c87cced5cb442d1d8fcc66d19",
"size": 10229
}
}
]docker image inspectの出力内容
docker image inspectの出力内容において、実務・学習で特によく見る項目を厳選して解説します。
Id(イメージID)
"Id": "sha256:fb01117203ff38c2f9af91db1a7409459182a37c87cced5cb442d1d8fcc66d19",Dockerイメージを一意に識別するIDです。同じビルド成果物であればタグ(nginx:latestなど)が変わってもIDは固定ですが、タグが別のイメージを指すようになるとIDは変わります。
Created(作成日時)
"Created": "2025-12-09T22:51:13.902320549Z",イメージが作成された日時です。「古いイメージを使っていないか?」の確認にも使えます。
Config.Env(環境変数)
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NGINX_VERSION=1.29.4",
"NJS_VERSION=0.9.4",
"NJS_RELEASE=1~trixie",
"PKG_RELEASE=1~trixie",
"DYNPKG_RELEASE=1~trixie"
],DockerfileのENV命令で設定された環境変数です。この環境変数は、コンテナ起動時にそのまま利用されます。上記の出力結果から、Nginxのバージョンが1.29.4に設定されていることや、実行時のPATHが確認できます。
Config.ExposedPorts(公開ポート)
"ExposedPorts": {
"80/tcp": {}
},DockerfileのEXPOSEに対応します。この項目は、「イメージがデフォルトで開放しているポート」を示します。nginxイメージでは、HTTP用の80番ポートが指定されています。なお、EXPOSEは「公開する予定のポート」を示すだけで、実際に公開されるかどうかは-pオプション次第です。
Config.Cmd / Config.Entrypoint
"Entrypoint": [
"/docker-entrypoint.sh"
],
"Cmd": [
"nginx",
"-g",
"daemon off;"
],CMD:デフォルトで実行されるコマンドENTRYPOINT:常に実行されるメインコマンド
ENTRYPOINTとCMDは組み合わさって実行されることが多く、nginxイメージでは/docker-entrypoint.sh nginx -g "daemon off;"のような形で最終的なコマンドが構成されます。
特定の項目だけを確認する(--format)
docker image inspectは、そのまま実行すると大量の情報が表示されます。必要な情報だけを絞り込んで取得・表示するためには、--formatオプションを使います。
CMDだけ確認する
$ docker image inspect --format '{{.Config.Cmd}}' nginx:latest
[nginx -g daemon off;]ENTRYPOINTだけ確認する
$ docker image inspect --format '{{.Config.Entrypoint}}' nginx:latest
[/docker-entrypoint.sh]環境変数だけ確認する
$ docker image inspect --format '{{.Config.Env}}' nginx:latest
[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin NGINX_VERSION=1.29.4 NJS_VERSION=0.9.4 NJS_RELEASE=1~trixie PKG_RELEASE=1~trixie DYNPKG_RELEASE=1~trixie]イメージIDだけ確認する
$ docker image inspect --format='{{.Id}}' nginx:latest
sha256:fb01117203ff38c2f9af91db1a7409459182a37c87cced5cb442d1d8fcc66d19本記事のまとめ
この記事ではdocker image inspectコマンドについて説明しました。
docker image inspectは、Dockerイメージがどのような設定で作られているかを確認するための基本かつ重要なコマンドです。ENTRYPOINT・CMD・環境変数・EXPOSEポートなどを事前に把握しておくことで、コンテナ起動時の挙動を正しく理解できます。
Dockerイメージの中身を理解する第一歩として、ぜひ活用してみてください。
お読みいただきありがとうございました。