0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

docker image inspect:イメージの詳細確認

0
Posted at

 Dockerイメージを使用する際、「このイメージにはどんな設定が含まれているのか?」と気になることがあります。イメージの"環境変数の設定"や"エントリーポイント(ENTRYPOINT)"の情報を知りたい時があります。

 そんなときに活躍するのが"docker image inspect"コマンドです。このコマンドを使うと、Dockerイメージの詳細情報をJSON形式で確認することができます。

■ コマンドの基本

 コマンドの構文(使い方)は以下の通りです。

【構文】
$ docker image inspect [OPTIONS] IMAGE [IMAGE…]
【例:hello-worldイメージの詳細を確認】
$ 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でどのポートが開いているかを調べる
  • イメージの作成日時を確認したいとき → 古いイメージと新しいイメージの違いを把握する

 投稿のやる気につながるため、記事の内容が少しでも良いと思ったら、いいねやフォローしてくださいね。

 なお、続きが気になる方は以下の書籍で全文を掲載しています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?