Dockerイメージを使用する際、「このイメージにはどんな設定が含まれているのか?」と気になることがあります。イメージの"環境変数の設定"や"エントリーポイント(ENTRYPOINT)"の情報を知りたい時があります。
そんなときに活躍するのが"docker image inspect"コマンドです。このコマンドを使うと、Dockerイメージの詳細情報をJSON形式で確認することができます。
■ コマンドの基本
コマンドの構文(使い方)は以下の通りです。
$ docker image inspect [OPTIONS] IMAGE [IMAGE…]
$ docker image inspect hello-world
なお、構文で"…"となっている箇所では、複数指定が可能です。"docker image inspect"の場合、以下のように複数のイメージを指定可能です。
$ docker image inspect hello-world ubuntu alpine
■ コマンドの実践
それでは、実際に動かしながら学んでみましょう。後の説明のために、Nginx(エンジンエックス)のイメージをpullします。そして、イメージの詳細を確認してみます。なお、Nginxは軽量で高性能なWebサーバーです。
以下のコマンドを実行してください。
# Nginxイメージのpull
$ docker image pull nginx
# Nginxイメージの詳細情報を表示
$ docker image inspect nginx
[
{
"Id": "sha256:124b44bfc9ccd1f3cedf4b…",
"RepoTags": [
"nginx:latest"
],
"RepoDigests": [
"nginx@sha256:124b44bfc9ccd1f3cedf4…"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2025-02-05T21:27:16Z",
"DockerVersion": "27.5.1",
"Author": "",
…(省略)
}
]
このコマンドを実行すると、JSON形式で多くの情報が出力されます。沢山の情報が出力されるため、実行結果の一部を省略しています。
補足:イメージ名がないと言われる
イメージ名を指定して実行すると、以下のようなエラーメッセージが表示されることがあります。
【例:エラーメッセージ】
Error response from daemon: {"message":"No such image: nginx"}
上記は"nginx"という名前のイメージがないというメッセージです。このような場合、イメージ名の代わりにイメージIDを指定して実行してみてください。"docker image ls"コマンドを実行すると、イメージIDを確認できます。
■ 出力内容
コマンドの実行結果として、多くの情報が表示されます。この中でも、特によく確認する項目を紹介します。
1. イメージの作成情報
"Created": "2025-02-05T21:27:16Z",
この項目は、イメージが作成された日時を示しています。いつ作られたイメージなのかを確認するときに便利です。
2. イメージID
"Id": "sha256:124b44bfc9ccd1…",
イメージの一意な識別子(ID)を表示します。このIDを使って、特定のイメージを操作することができます。
3. 環境変数(ENV)
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:…",
"NGINX_VERSION=1.27.4",
…(省略)
]
この項目では、環境変数(ENV)の設定を確認できます。この環境変数が、実際にコンテナに設定されます。上記の出力結果から、Nginxのバージョンが1.27.4に設定されていることが分かります。
4. エントリーポイント(ENTRYPOINT)
"Entrypoint": [
"/docker-entrypoint.sh"
]
エントリーポイントでは、「コンテナが起動したときに実行されるデフォルトのコマンド」を確認できます。これは、コンテナの動作を決める重要な設定です。詳細は後の章で説明します。
5. コマンド(CMD)
"Cmd": [
"nginx",
"-g",
"daemon off;"
]
コマンド(CMD)は、コンテナ起動時に実行されるコマンドです。ENTRYPOINTと組み合わせて使用します。詳細は別の記事で説明します。
6. ポート設定(EXPOSE)
"ExposedPorts": {
"80/tcp": {}
}
この項目は、「イメージがデフォルトで開放しているポート」を示します。"nginx"イメージの場合、HTTP用のポート80が開放されていることが分かります。
■ オプション
"docker image inspect"は、そのまま実行すると大量の情報が表示されます。必要な情報だけを絞り込んで取得・表示するためには、"--format"オプションを使います。このオプションには、JSON形式で出力される項目を指定します。
1. イメージIDだけを取得
以下のコマンドを実行してください。
$ docker image inspect nginx --format='{{.Id}}'
sha256:124b44bfc9ccd1f3cedf4b …
イメージIDを取得できました。
2. 環境変数(ENV)のみを取得
以下のコマンドを実行してください。
$ docker image inspect nginx --format='{{.Config.Env}}'
[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin NGINX_VERSION=1.27.4 NJS_VERSION=0.8.9 NJS_RELEASE=1~bookworm PKG_RELEASE=1~bookworm DYNPKG_RELEASE=1~bookworm]
環境変数を取得できました。必要な情報だけを取得することで、他のコマンドと組み合わせて実行する場合にも使えます。
■ ユースケース
"docker image inspect"コマンドは、以下のような場面で使用します。
- イメージの詳細な構成を確認したいとき → イメージの環境変数などを知りたい
- コンテナ起動時の動作を調べたいとき → ENTRYPOINTやCMDの設定を確認する
- 開放ポートを確認したいとき → EXPOSEでどのポートが開いているかを調べる
- イメージの作成日時を確認したいとき → 古いイメージと新しいイメージの違いを把握する
投稿のやる気につながるため、記事の内容が少しでも良いと思ったら、いいねやフォローしてくださいね。
なお、続きが気になる方は以下の書籍で全文を掲載しています。