はじめに#
本記事では、Dockerでのイメージ操作に関する主要コマンドを、目的別に整理して解説します。各コマンドの基本構文、主要オプション、出力例を網羅しており、初学者から実務者までのリファレンスとして活用できます。
イメージの確認と情報取得#
イメージ一覧(ls)#
ローカルに存在するDockerイメージを一覧表示します。
1
|
$ docker image ls [オプション] [リポジトリ[:タグ]]
|
オプション |
省略形 |
デフォルト |
説明 |
--all |
-a |
|
中間イメージを含むすべてのイメージを表示 |
--digests |
|
|
DIGESTS 列を表示に追加 |
--filter |
-f |
|
表示対象を絞り込み |
--format |
|
table |
テンプレートによる出力整形(table , json , TEMPLATE など) |
--no-trunc |
|
|
出力を省略せずに表示 |
--quiet |
-q |
|
イメージIDのみ表示 |
出力例#
1
2
3
4
5
6
7
8
|
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest e2e172ecd069 2 weeks ago 69.3MB
nginx latest 6c7be49d2a11 3 months ago 192MB
$ docker image ls -q
e2e172ecd069
6c7be49d2a11
|
フィルタ(–filter)の使用例#
1
2
3
4
5
6
7
8
9
10
11
12
|
# タグが付いていない中間イメージを表示
$ docker image ls --filter "dangling=true"
# ラベルでフィルタ
$ docker image ls --filter "label=org.opencontainers.image.version=22.04"
# 作成順でフィルタ
$ docker image ls --filter "before=nginx"
$ docker image ls --filter "since=ubuntu"
# リポジトリ+タグでパターンマッチ
$ docker image ls --filter "reference=ubuntu:*"
|
詳細情報の取得(inspect)#
イメージの設定内容(環境変数、ラベル、エントリポイントなど)を確認できます。
1
|
$ docker image inspect [オプション] イメージ名
|
オプション |
省略形 |
デフォルト |
説明 |
--format |
-f |
|
出力内容をテンプレートで整形 |
出力例#
1
2
|
$ docker image inspect -f "{{json .Config.Env}}" nginx
["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","NGINX_VERSION=1.25.3"]
|
履歴の確認(history)#
イメージがどのように構築されたかを確認できます。
1
|
$ docker image history [オプション] イメージ名
|
オプション |
省略形 |
デフォルト |
説明 |
--format |
― |
table |
表示形式のカスタマイズ |
出力例#
1
2
3
4
|
$ docker image history ubuntu
IMAGE CREATED CREATED BY SIZE COMMENT
e2e172ecd069 2 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 2 weeks ago /bin/sh -c #(nop) ADD file:... 69.3MB
|
イメージの作成と管理#
ビルド(build)#
Dockerfile から新しいイメージを作成します。
1
|
$ docker image build [オプション] パス
|
オプション |
省略形 |
デフォルト |
説明 |
--file |
-f |
|
使用する Dockerfile のパス(省略時は ./Dockerfile ) |
--tag |
-t |
|
イメージ名とタグを指定(例:myimage:latest ) |
--target |
|
|
マルチステージビルドでのステージ指定 |
使用例#
1
2
|
$ docker image build -t myimage:latest .
$ docker image build -f Dockerfile.dev -t devimage:1.0 .
|
タグ付け(tag)#
既存のイメージに別の名前(タグ)を付けます。
1
|
$ docker image tag 元イメージ 新しい名前[:タグ]
|
使用例#
1
2
|
$ docker image tag ubuntu ubuntu:mytag
$ docker image tag ubuntu registry.example.com/test:1.0
|
レジストリとの送受信#
プッシュ(push)#
イメージをリモートレジストリにアップロードします。
1
|
$ docker image push [オプション] リポジトリ[:タグ]
|
オプション |
省略形 |
デフォルト |
説明 |
--all-tags |
-a |
|
対象リポジトリの全タグを送信 |
使用例#
1
|
$ docker image push myimage:latest
|
プル(pull)#
リモートレジストリからイメージを取得します。
1
|
$ docker image pull [オプション] リポジトリ[:タグ]
|
オプション |
省略形 |
デフォルト |
説明 |
--all-tags |
-a |
|
対象リポジトリの全タグを取得 |
使用例#
1
|
$ docker image pull ubuntu:20.04
|
イメージの保存と読み込み#
保存(save)#
Dockerイメージを .tar
ファイルとして保存します。バックアップや他環境への持ち運びに便利です。
1
|
$ docker image save [オプション] イメージ名
|
オプション |
省略形 |
デフォルト |
説明 |
--output |
-o |
|
保存先ファイル名を指定 |
使用例#
1
2
|
$ docker image save -o test.tar ubuntu
$ docker image save ubuntu | gzip > test.tar.gz
|
読み込み(load)#
save
で保存した .tar
ファイルからイメージを復元します。ファイルは gzip, bzip2, xz, zstd 圧縮でも可です。
1
|
$ docker image load [オプション]
|
オプション |
省略形 |
デフォルト |
説明 |
--input |
-i |
|
読み込むファイル名を指定 |
使用例#
1
2
|
$ docker image load < test.tar
$ docker image load -i test.tar
|
インポート(import)#
アーカイブファイルからイメージを新たに生成します。save/load
とは異なり、ファイルシステムのスナップショットから構築されます。
1
|
$ docker image import [オプション] ファイルパス リポジトリ[:タグ]
|
使用例#
1
|
$ docker image import test.tar test:1.0
|
イメージの削除と整理#
単体削除(rm)#
指定したDockerイメージを削除します。コンテナがそのイメージを参照している場合、デフォルトでは削除できません。
1
|
$ docker image rm [オプション] イメージ名
|
オプション |
省略形 |
デフォルト |
説明 |
--force |
-f |
|
コンテナから参照されていても強制削除 |
使用例#
1
|
$ docker image rm ubuntu
|
未使用イメージの一括削除(prune)#
未使用かつタグが付いていない「danglingイメージ」を削除します。--all
を付けると、タグ付きでも未使用であれば削除対象になります。
1
|
$ docker image prune [オプション]
|
オプション |
省略形 |
デフォルト |
説明 |
--all |
-a |
|
タグ付きの未使用イメージも対象に含める |
--filter |
|
|
削除対象の条件指定(until やlabel ) |
--force |
-f |
|
確認メッセージを省略して即削除 |
使用例#
1
|
$ docker image prune -a
|
フィルタの例:until#
指定日時以前に作成されたイメージを削除対象とします。
1
|
$ docker image prune -a --filter "until=2024-01-01T00:00:00"
|
フィルタの例:label#
ラベルを条件に削除対象を絞り込めます。
1
|
$ docker image prune -a --filter "label=stage=dev"
|
出力整形と条件指定の応用#
条件指定(–filter)#
--filter
は ls
や prune
など複数のコマンドで使用でき、対象を細かく絞り込むのに有効です。
フィルタ項目 |
説明 |
使用例 |
dangling |
タグなしイメージの抽出 |
--filter "dangling=true" |
label |
ラベルで条件指定 |
--filter "label=stage=dev" |
before / since |
特定のイメージより前後でフィルタ |
--filter "before=nginx" |
reference |
リポジトリ+タグのパターン |
--filter "reference=ubuntu:*" |
until |
日時より前に作成されたもの(prune 限定) |
--filter "until=2024-01-01" |
Goテンプレート構文を用いて出力をカスタマイズできます。
使用例#
1
2
3
4
5
|
# リポジトリとタグを並べて表示
$ docker image ls --format '{{.Repository}}:{{.Tag}}'
# 表形式で整形出力
$ docker image ls --format 'table {{.ID}}\t{{.Repository}}\t{{.Tag}}'
|
主なテンプレート関数#
関数名 |
説明 |
使用例 |
join |
配列を結合 |
{{join .Config.Cmd " "}} |
split |
文字列を区切って配列化 |
{{split .Created "T"}} |
lower / upper |
大文字・小文字変換 |
{{upper .Repository}} |
title |
先頭のみ大文字化 |
{{title .Repository}} |
json |
JSON形式で出力 |
{{json .Config.Env}} |
println |
改行出力 |
{{println .ID}}{{.Repository}} |
使用例#
1
2
|
$ docker image inspect --format '{{json .Config.Env}}' nginx
$ docker image ls --format '{{title .Repository}}\t{{.Size}}'
|
まとめ#
本記事では、Dockerイメージの操作に関するコマンドを、以下の観点から体系的に解説しました。
- イメージの確認と詳細情報の取得(
ls
, inspect
, history
)
- イメージの作成とレジストリとの連携(
build
, tag
, push
, pull
)
- イメージの保存と復元(
save
, load
, import
)
- イメージの削除と整理(
rm
, prune
)
- フィルタリングと出力整形の応用(
--filter
, --format
)
各コマンドの基本構文・主要オプション・実行例を網羅しており、初学者の学習用途から、実務における運用・自動化のリファレンスとしても役立ちます。
特に、複数イメージを扱う場面やCI/CD環境では、--filter
を活用した選別や、--format
による出力制御が有効です。Dockerイメージの管理スキルを高めることで、より再現性と保守性の高い開発運用が実現できます。