タイトル: イメージの検索 / 取得 / 取得済み一覧の確認
SEOタイトル: Docker イメージ操作完全ガイド(search / pull / images / rmi / multi-arch)
| この記事の要点 |
|
イメージの検索
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-alpine | Alpine Linux ベース(小さい) |
1.27-slim | Debian slim ベース(中庸) |
1.27-bookworm | Debian 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
# 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
# ダングリング () だけ
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: イメージは「テンプレート」(読み取り専用のレイヤ集合)、コンテナは「実体」(イメージから起動されたプロセス)。同じイメージから複数コンテナを起動できます。