目次

Docker inspect 入門:コンテナとイメージの詳細情報を確認する(-f 形式の例)

docker inspect は Docker オブジェクトの設定と状態を JSON 形式で表示します。対象はコンテナ、イメージ、Volume、ネットワークです。

構文

docker inspect [オプション] 名前またはID [名前またはID...]
オプション説明
-f, --format テンプレートGo テンプレートを使って必要な部分だけを取得します。または json を指定します
--type 種類オブジェクトの種類を指定します:container、image、volume、network など(名前が重複する場合に使用)
-s, --sizeコンテナ:サイズも同時に表示します

全出力

$ docker inspect web | head -n 12
[
    {
        "Id": "1ec4fdc5c592b09b64e8f28869c37f89ab17163f88bfcb09e82815a44b0e1164",
        "Created": "2026-10-13T05:28:35.05807319Z",
        "Path": "/docker-entrypoint.sh",
        "Args": [
            "nginx",
            "-g",
            "daemon off;"
        ],
        "State": {
            "Status": "running",

全出力は数百行に及びます。実際にはほとんどの場合、-f を付けて必要なフィールドだけを取得します。

-f テンプレート:よく使う検索

以下では、起動時に -e APP_MODE=demo を設定した web という名前の nginx コンテナを調べます。

$ docker inspect -f "{{.State.Status}} {{.State.StartedAt}}" web
running 2026-10-13T05:28:40.584115149Z

$ docker inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" web
172.18.0.2

$ docker inspect -f "{{json .Config.Env}}" web
["APP_MODE=demo","PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","NGINX_VERSION=1.30.5","PKG_RELEASE=1","DYNPKG_RELEASE=1","NJS_VERSION=1.0.1","NJS_RELEASE=1","ACME_VERSION=0.4.1"]

$ docker inspect -f "{{.Config.Image}} {{.HostConfig.RestartPolicy.Name}}" web
nginx:1.30-alpine no
確認したい情報テンプレート
状態と起動時刻{{.State.Status}} {{.State.StartedAt}}
終了コード、メモリ不足かどうか{{.State.ExitCode}} {{.State.OOMKilled}}
IP アドレス{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}
環境変数{{json .Config.Env}}
使用中のイメージ、再起動ポリシー{{.Config.Image}} {{.HostConfig.RestartPolicy.Name}}
マウント{{json .Mounts}}
ポートの割り当て{{json .NetworkSettings.Ports}}
ヘルスチェックの結果{{json .State.Health}}
ホスト上の PID{{.State.Pid}}

テンプレートの構文:

  • {{.フィールド.子フィールド}}:値を 1 つ取得します。
  • {{json .フィールド}}:全体(配列やオブジェクト)を JSON で出力します。
  • {{range .リスト}}...{{end}}:リストまたはオブジェクトの各項目を順に処理します。

Docker 29 での変更:以前のチュートリアルでよく見かける {{.NetworkSettings.IPAddress}} は削除されており、実行すると template parsing error: ... map has no entry for key "IPAddress" が表示されます。上の表にある range の書き方を使ってください。

イメージ、Volume、ネットワーク

$ docker inspect -f "{{.Config.Cmd}} {{.Config.Entrypoint}}" nginx:1.30-alpine
[nginx -g daemon off;] [/docker-entrypoint.sh]

$ docker inspect -f "{{.Architecture}} {{.Os}} {{.Size}}" nginx:1.30-alpine
amd64 linux 92750711

$ docker volume create v1
v1

$ docker inspect -f "{{.Mountpoint}}" v1
/var/lib/docker/volumes/v1/_data

$ docker inspect --type network -f "{{range .IPAM.Config}}{{.Subnet}}{{end}}" bridge
172.18.0.0/16

$ docker volume rm v1
v1
  • イメージの .Config.Cmd と .Config.Entrypoint はデフォルトの起動コマンドです。.Architecture は CPU アーキテクチャ、.Size はバイト数です(92750711 は約 92.8 MB)。
  • Volume の .Mountpoint は、Docker ホスト上にあるデータの実際の場所です。Docker Desktop ではこのパスは仮想マシン内にあるため、Windows や macOS から直接開くことはできません。
  • --type network はネットワークの検索を指定し、.IPAM.Config はサブネットの設定を示します。

関連する章

練習問題

練習:web コンテナがどのパスをマウントしているか、またポートがどう割り当てられているかを調べてください。

解答
docker inspect -f "{{json .Mounts}}" web
docker inspect -f "{{json .NetworkSettings.Ports}}" web

このページの web にはマウントがなく、-p も指定されていないため、出力はそれぞれ [] と、コンテナ内のポートだけを示す {"80/tcp":null} です。

よくある質問

ネットで見かける {{.NetworkSettings.IPAddress}} がエラーになるのはなぜですか?

Docker 29 ではこのフィールドが提供されなくなり、使うと map has no entry for key "IPAddress" というエラーが表示されます。IP アドレスは各ネットワークから取得してください:{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}。

調べられるフィールドを確認するにはどうすればよいですか?

まず -f を付けずに実行すると、出力される JSON の構造がフィールド名になります。たとえば State.Status は {{.State.Status}} と書きます。{{json .Config}} を使って、ある部分をまとめて出力することもできます。

Windows では -f の引用符をどう書きますか?

PowerShell と CMD のどちらでも、テンプレートを二重引用符で囲みます。例:docker inspect -f "{{.State.Status}}" web。テンプレート内では二重引用符を使えないため、必要な場合は単引用符の文字列にしてください。

更新日 2026年10月14日