2.

Docker イメージ操作完全ガイド(search / pull / images / rmi / multi-arch)

編集
この記事の要点
  • 検索: docker search nginx(Docker Hub のリポジトリを検索)
  • 取得: docker pull nginx:1.27(タグ未指定は latest
  • 一覧: docker images または docker image ls
  • 削除: docker rmi nginx / 未使用一括削除 docker image prune -a
  • マルチアーキ: --platform linux/amd64 で AMD64 を強制取得(Apple Silicon でよく使う)
  • 詳細: docker history image(レイヤ)/ docker inspect image(JSON)

イメージの検索

Docker Hub 上のリポジトリを検索:

# キーワード検索
docker search nginx
docker search --limit 5 mysql

# 出力例
# NAME                  DESCRIPTION                  STARS    OFFICIAL   AUTOMATED
# nginx                 Official build of Nginx.     20000    [OK]
# bitnami/nginx         Bitnami nginx Docker Image   200
# linuxserver/nginx     ...                          120

# 公式イメージだけ
docker search --filter=is-official=true nginx

# スター数フィルタ
docker search --filter=stars=1000 redis

# Docker CLI の検索はリポジトリ名・説明のみ。
# タグまで検索したい場合はブラウザで https://hub.docker.com を使う

イメージの取得 (pull)

# 最新版 (latest)
docker pull nginx

# タグ指定(推奨)
docker pull nginx:1.27
docker pull nginx:1.27-alpine
docker pull mysql:8.0

# Docker Hub 以外のレジストリ
docker pull gcr.io/google-containers/pause:3.9
docker pull mcr.microsoft.com/dotnet/sdk:8.0
docker pull ghcr.io/owner/myapp:v1.2.3

# プラットフォーム指定(Apple Silicon で AMD64 を取りたい等)
docker pull --platform linux/amd64 nginx:1.27
docker pull --platform linux/arm64 nginx:1.27

# 全タグ取得(非推奨、ディスク食う)
docker pull -a nginx

タグの読み方の例:

タグ内容
latest明示なし時のデフォルト。最新ビルドが指される(変動するので本番非推奨)
1.27マイナーバージョン固定
1.27.0パッチバージョン固定(再現性高)
1.27-alpineAlpine Linux ベース(小さい)
1.27-slimDebian slim ベース(中庸)
1.27-bookwormDebian 12 ベース
@sha256:abc...★ 完全固定(最も再現性が高い、CI 推奨)

取得済みイメージの一覧

# 一覧表示
docker images
docker image ls

# 出力例
# REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
# nginx        1.27      a1b2c3d4e5f6   3 days ago    187MB
# mysql        8.0       1a2b3c4d5e6f   1 week ago    600MB
# <none>       <none>    deadbeefcafe   2 weeks ago   120MB    ← dangling

# 詳細フォーマット
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"
docker images --format "{{.Repository}}:{{.Tag}}"

# 特定リポジトリだけ
docker images nginx

# 全部 (中間イメージ含む)
docker images -a

# ダングリング (<none>) だけ
docker images -f dangling=true

# 容量降順ソート
docker images --format "{{.Size}}\t{{.Repository}}:{{.Tag}}" | sort -h

イメージの削除

# 名前指定
docker rmi nginx:1.27
docker rmi nginx                  # latest

# ID 指定(先頭数文字でも可)
docker rmi a1b2c3d4

# 強制削除(使用中コンテナがあっても)
docker rmi -f nginx

# ダングリングイメージ一括
docker image prune

# 使われていないイメージ全部(注意)
docker image prune -a

# ビルダーキャッシュも込みで全部
docker system prune -a --volumes

イメージの詳細を見る

# レイヤ履歴
docker history nginx:1.27
# 各レイヤの作成コマンド、サイズ、作成時刻

# JSON 詳細
docker inspect nginx:1.27
docker inspect --format '{{.Config.Cmd}}' nginx:1.27
docker inspect --format '{{.Config.ExposedPorts}}' nginx:1.27

# イメージ内のファイル構造を見る(dive ツール)
# brew install dive  / apt install dive
dive nginx:1.27

# イメージ内のシェルに入る(一時コンテナ起動)
docker run --rm -it nginx:1.27 bash

マルチアーキテクチャ (multi-arch) イメージ

nginx などの公式イメージは複数 CPU アーキテクチャ(amd64 / arm64 / armv7 / s390x ...)に対応しています。docker pull 時は自動でホストの CPU に合うものを選択しますが、--platform で強制指定できます。

# Apple Silicon Mac で AMD64 イメージを使う(互換性確保)
docker pull --platform linux/amd64 mysql:8.0
docker run --platform linux/amd64 mysql:8.0

# manifest 一覧(どのアーキ用ビルドがあるか確認)
docker manifest inspect nginx:1.27 | grep -E 'os|architecture'

# buildx で multi-arch ビルド
docker buildx build --platform linux/amd64,linux/arm64 -t myapp:v1 --push .

レジストリ認証 (ログイン)

# Docker Hub
docker login
# Username, Password (or Access Token)

# GitHub Container Registry
docker login ghcr.io -u USERNAME -p $GITHUB_PAT

# AWS ECR
aws ecr get-login-password --region ap-northeast-1 \
    | docker login --username AWS --password-stdin \
                   123456789012.dkr.ecr.ap-northeast-1.amazonaws.com

# プライベートレジストリから pull
docker pull 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/myapp:v1

save / load でイメージを別マシンへ

# tar に書き出し
docker save -o nginx.tar nginx:1.27

# 圧縮
docker save nginx:1.27 | gzip > nginx.tar.gz

# 別マシンで読み込み
docker load -i nginx.tar
zcat nginx.tar.gz | docker load

FAQ

Q: docker pull が遅い / 失敗する
A: ① Docker Hub のレート制限(匿名 100 pulls / 6h)に達した可能性 → docker login または別レジストリ(ghcr / ECR)を使う、② 社内プロキシ環境 → ~/.docker/config.json にプロキシ設定。

Q: latest タグは何が悪い?
A: いつ pull するかで実体が変わるため本番再現性が崩壊。本番 / CI では必ずバージョン明示 or sha256 ピンを推奨。

Q: イメージとコンテナの違い
A: イメージは「テンプレート」(読み取り専用のレイヤ集合)、コンテナは「実体」(イメージから起動されたプロセス)。同じイメージから複数コンテナを起動できます。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. インストール方法(Windows)
  2. イメージの検索 / 取得 / 取得済み一覧の確認
  3. use windows containers instead of linux containers docker
  4. バージョンの確認
  5. エラー一覧

最近更新/作成されたページ