目次

docker pull コマンド入門:イメージのダウンロード(--platform、-q、digest の指定)

docker pull はイメージレジストリからイメージをダウンロードします。イメージとタグの概念についてはイメージを参照してください。

構文

docker pull [オプション] 名前[:タグ|@digest]

オプション

オプション説明
-a, --all-tagsリポジトリにあるタグ付きイメージをすべてダウンロードします
--platform 文字列サーバーがマルチプラットフォームに対応している場合、ダウンロードするプラットフォームを指定します
-q, --quiet詳細な出力を非表示にします

例

イメージをダウンロードして再度 pull する

$ docker pull alpine:3.23
3.23: Pulling from library/alpine
5e9b4a97f639: Pulling fs layer
5e9b4a97f639: Download complete
97ab9557f126: Download complete
79dff55e92ba: Download complete
5e9b4a97f639: Pull complete
Digest: sha256:ff7f0c727dd796aa36787bfcd9a64bf35a6ce72a73451b3359fde849b6703d63
Status: Downloaded newer image for alpine:3.23
docker.io/library/alpine:3.23

$ docker pull alpine:3.23
3.23: Pulling from library/alpine
Digest: sha256:ff7f0c727dd796aa36787bfcd9a64bf35a6ce72a73451b3359fde849b6703d63
Status: Image is up to date for alpine:3.23
docker.io/library/alpine:3.23
  • 初回の pull では、レイヤーのダウンロード状況、digest、および Downloaded newer image という状態が表示されます。
  • 再度 pull すると、digest は同じで Image is up to date と表示され、レイヤーのダウンロード状況は再表示されません。
  • registry を指定しない場合、出力される完全な名前は docker.io/library/alpine:3.23 です。

quiet モードと存在しない tag

$ docker pull -q redis:8-alpine
docker.io/library/redis:8-alpine

$ docker pull nginx:9.99
Error response from daemon: failed to resolve reference "docker.io/library/nginx:9.99": docker.io/library/nginx:9.99: not found
  • -q はダウンロードの進行状況などの詳細な出力を非表示にします。例ではイメージの完全な名前だけが出力されます。
  • tag 9.99 が見つからない場合、daemon は not found を返し、解決できなかった完全なイメージ参照を示します。

プラットフォームを指定してバリエーションを確認する

$ docker pull --platform linux/arm64 alpine:3.23
3.23: Pulling from library/alpine
197a036d7c64: Pulling fs layer
197a036d7c64: Download complete
4f0cdf9143b4: Download complete
8b7a0920489a: Download complete
197a036d7c64: Pull complete
Digest: sha256:ff7f0c727dd796aa36787bfcd9a64bf35a6ce72a73451b3359fde849b6703d63
Status: Image is up to date for alpine:3.23
docker.io/library/alpine:3.23

$ docker image inspect -f '{{.Os}}/{{.Architecture}}' alpine:3.23
linux/amd64

$ docker images --tree alpine:3.23
IMAGE                   ID             DISK USAGE   CONTENT SIZE   EXTRA
alpine:3.23             ff7f0c727dd7       26.6MB         8.21MB        
├─ linux/amd64          3d67941fed5a       12.9MB         3.85MB        
├─ linux/arm/v6         806bbcf86639           0B             0B        
├─ linux/arm/v7         b43a13ac240c           0B             0B        
├─ linux/arm64/v8       8793abc47938       13.5MB         4.19MB        
├─ linux/386            7811c228ca81           0B             0B        
├─ linux/ppc64le        cc3ef1f3240a           0B             0B        
├─ linux/riscv64        1e12543f1917           0B             0B        
└─ linux/s390x          ac74ebe0c48b           0B             0B        
  • --platform linux/arm64 で arm64 版のレイヤーをダウンロードしましたが、状態は Image is up to date のままです。alpine:3.23 はマルチプラットフォームイメージで、名前と digest は変わらず、ローカルに別のプラットフォームの内容が追加されただけです。
  • そのため、docker image inspect にはデフォルトでローカルのプラットフォーム linux/amd64 が表示されます。別のプラットフォームを確認するには、次の docker images --tree を使います。
  • docker images --tree は amd64 や arm64/v8 などのプラットフォームバリエーションを一覧表示します。この例では arm64/v8 のディスク使用量は 13.5MB です。

digest でイメージのバージョンを固定する

$ docker pull alpine@sha256:85fe1e81d6758c208f3e1eed4338a1997e19d4be002d4dd32d3100c9a8c010a0
docker.io/library/alpine@sha256:85fe1e81d6758c208f3e1eed4338a1997e19d4be002d4dd32d3100c9a8c010a0: Pulling from library/alpine
d0c1d894c237: Pulling fs layer
d0c1d894c237: Download complete
d836c7fd48f4: Download complete
047d62850641: Download complete
d0c1d894c237: Pull complete
Digest: sha256:85fe1e81d6758c208f3e1eed4338a1997e19d4be002d4dd32d3100c9a8c010a0
Status: Downloaded newer image for alpine@sha256:85fe1e81d6758c208f3e1eed4338a1997e19d4be002d4dd32d3100c9a8c010a0
docker.io/library/alpine@sha256:85fe1e81d6758c208f3e1eed4338a1997e19d4be002d4dd32d3100c9a8c010a0

$ docker images alpine
IMAGE                                                                            ID             DISK USAGE   CONTENT SIZE   EXTRA
alpine:3.23                                                                      ff7f0c727dd7       26.6MB         8.21MB        
alpine@sha256:85fe1e81d6758c208f3e1eed4338a1997e19d4be002d4dd32d3100c9a8c010a0   85fe1e81d675         13MB         3.94MB        
  • イメージ名の後に @sha256: と digest を付けると、変動する tag ではなく digest でイメージを指定できます。
  • 出力の Digest は指定した digest と同じで、状態は Downloaded newer image です。
  • docker images alpine には alpine:3.23 と digest 形式の参照が両方表示され、ID は異なります。この digest は以前の 3.23 版を指しており、その後 3.23 tag はより新しいビルドを指すようになりました。digest でバージョンを固定する理由はここにあります。tag は移動しますが、digest は変わりません。

関連する章

練習問題

練習:digest を使って課題の Alpine イメージを pull し、ローカルの Alpine イメージ一覧を確認してください。

解答
docker pull alpine@sha256:85fe1e81d6758c208f3e1eed4338a1997e19d4be002d4dd32d3100c9a8c010a0
docker images alpine

よくある質問

docker pull を繰り返すとイメージは再ダウンロードされますか?

イメージが最新の場合、出力には Image is up to date と表示されます。例では digest とイメージ参照も初回のダウンロード時と同じです。

ダウンロードするイメージのバージョンを固定するにはどうすればよいですか?

イメージ名の後に @sha256: と digest を指定します。例:alpine@sha256:85fe1e81d6758c208f3e1eed4338a1997e19d4be002d4dd32d3100c9a8c010a0。

tag が存在しない場合、どのようなエラーが表示されますか?

例の nginx:9.99 では not found が返され、registry がそのイメージ参照を見つけられないことを示します。

--platform を指定すると、inspect の結果にも必ずそのプラットフォームが表示されますか?

例では linux/arm64 を指定して pull した後、docker image inspect に linux/amd64 と表示されます。docker images --tree を使うと、そのイメージに含まれる複数のプラットフォームバリエーションを確認できます。

更新日 2026年10月26日