docker image pull

描述从仓库下载镜像
用法docker image pull [OPTIONS] NAME[:TAG|@DIGEST]
别名
docker pull

描述

大多数镜像都将基于 Docker Hub 仓库中的基础镜像创建。

Docker Hub 包含许多预构建的镜像,您可以 pull 并尝试它们,而无需定义和配置您自己的镜像。

要下载特定的镜像或一组镜像(即仓库),请使用 docker pull

代理配置

如果您位于 HTTP 代理服务器之后,例如在公司环境中, 在与注册表打开连接之前,您可能需要配置 Docker 守护进程的代理设置,详情请参阅 dockerd 命令行参考

并行下载

默认情况下,Docker 守护进程一次会拉取镜像的三个层。 如果您处于低带宽连接环境,这可能会导致超时问题,您可能需要通过 --max-concurrent-downloads 守护进程选项降低该值。有关更多详细信息,请参阅 守护进程文档

选项

选项默认描述
-a, --all-tags下载仓库中所有标记的镜像
--disable-content-trusttrue跳过镜像验证
--platformAPI 1.32+ 如果服务器支持多平台,则设置平台
-q, --quiet抑制详细输出

示例

从 Docker Hub 拉取镜像

要下载特定的镜像或一组镜像(即仓库),请使用 docker image pull(或 docker pull 简写)。如果未提供标签, Docker Engine 将使用 :latest 标签作为默认值。此示例拉取 debian:latest 镜像:

$ docker image pull debian

Using default tag: latest
latest: Pulling from library/debian
e756f3fdd6a3: Pull complete
Digest: sha256:3f1d6c17773a45c97bd8f158d665c9709d7b29ed7917ac934086ad96f92e4510
Status: Downloaded newer image for debian:latest
docker.io/library/debian:latest

Docker 镜像可以由多层组成。在上面的示例中,镜像 由单层组成;e756f3fdd6a3

层可以被镜像复用。例如,debian:bookworm 镜像与 debian:latest 共享其层。因此,拉取 debian:bookworm 镜像时只会拉取其元数据,而不会拉取其层,因为该层已经在本地存在:

$ docker image pull debian:bookworm

bookworm: Pulling from library/debian
Digest: sha256:3f1d6c17773a45c97bd8f158d665c9709d7b29ed7917ac934086ad96f92e4510
Status: Downloaded newer image for debian:bookworm
docker.io/library/debian:bookworm

要查看本地存在哪些镜像,请使用 docker images 命令:

$ docker images

REPOSITORY   TAG        IMAGE ID       CREATED        SIZE
debian       bookworm   4eacea30377a   8 days ago     124MB
debian       latest     4eacea30377a   8 days ago     124MB

Docker 使用内容寻址的镜像存储,镜像 ID 是一个涵盖镜像配置和层的 SHA256 摘要。在上面的示例中,debian:bookwormdebian:latest 具有相同的镜像 ID,因为它们是用不同名称标记的同一镜像。由于它们是同一镜像,它们的层仅存储一次,不会占用额外的磁盘空间。

有关镜像、层和内容寻址存储的更多信息, 请参阅 了解镜像、容器和存储驱动程序

通过摘要拉取镜像(不可变标识符)

到目前为止,您已经通过名称(和“标签”)拉取了镜像。使用名称和标签是处理镜像的一种便捷方式。使用标签时,您可以再次docker pull镜像以确保您拥有该镜像的最新版本。 例如,docker pull ubuntu:24.04拉取 Ubuntu 24.04 镜像的最新版本。

在某些情况下,您不希望镜像更新到新版本,而是倾向于使用镜像的固定版本。Docker 允许您通过摘要拉取镜像。通过摘要拉取镜像时,您指定了要拉取的确切镜像版本。这样做可以让您将镜像“锁定”在该版本,并确保您使用的镜像始终相同。

要了解镜像的摘要,请先拉取镜像。让我们从 Docker Hub 拉取最新的 ubuntu:24.04 镜像:

$ docker pull ubuntu:24.04

24.04: Pulling from library/ubuntu
125a6e411906: Pull complete
Digest: sha256:2e863c44b718727c860746568e1d54afd13b2fa71b160f5cd9058fc436217b30
Status: Downloaded newer image for ubuntu:24.04
docker.io/library/ubuntu:24.04

Docker 在拉取完成后打印镜像的摘要。在上面的示例中,镜像的摘要是:

sha256:2e863c44b718727c860746568e1d54afd13b2fa71b160f5cd9058fc436217b30

Docker 在推送到仓库时也会打印镜像的摘要。如果您想固定到刚才推送的镜像版本,这可能会很有用。

拉取镜像时,摘要可以代替标签,例如, 要通过摘要拉取上述镜像,请运行以下命令:

$ docker pull ubuntu@sha256:2e863c44b718727c860746568e1d54afd13b2fa71b160f5cd9058fc436217b30

docker.io/library/ubuntu@sha256:2e863c44b718727c860746568e1d54afd13b2fa71b160f5cd9058fc436217b30: Pulling from library/ubuntu
Digest: sha256:2e863c44b718727c860746568e1d54afd13b2fa71b160f5cd9058fc436217b30
Status: Image is up to date for ubuntu@sha256:2e863c44b718727c860746568e1d54afd13b2fa71b160f5cd9058fc436217b30
docker.io/library/ubuntu@sha256:2e863c44b718727c860746568e1d54afd13b2fa71b160f5cd9058fc436217b30

Digest 也可以用在 Dockerfile 的 FROM 中,例如:

FROM ubuntu@sha256:2e863c44b718727c860746568e1d54afd13b2fa71b160f5cd9058fc436217b30
LABEL org.opencontainers.image.authors="some maintainer <maintainer@example.com>"

注意

使用此功能会将镜像“固定”到特定时间点的版本。因此,Docker 不会拉取镜像的更新版本,这些更新可能包含安全更新。如果要拉取更新的镜像,则需要相应地更改摘要。

从其他镜像仓库拉取

默认情况下,docker pullDocker Hub 拉取镜像。也可以 手动指定要拉取的注册表路径。例如,如果您有 设置了一个本地注册表,您可以指定其路径从中拉取。注册表 路径类似于 URL,但不包含协议说明符 (https://)。

以下命令从监听端口 5000 (myregistry.local:5000) 的本地镜像仓库拉取 testing/test-image 镜像:

$ docker image pull myregistry.local:5000/testing/test-image

镜像仓库凭据由 docker login 管理。

Docker 使用 https:// 协议与仓库进行通信,除非该仓库被允许通过不安全的连接进行访问。请参阅 不安全的仓库 部分以获取更多信息。

拉取包含多个镜像的仓库 (-a, --all-tags)

默认情况下,docker pull 从注册表拉取单个镜像。一个仓库可以包含多个镜像。要从仓库拉取所有镜像,在使用 docker pull 时请提供 -a(或 --all-tags)选项。

此命令从 ubuntu 仓库拉取所有镜像:

$ docker image pull --all-tags ubuntu

Pulling repository ubuntu
ad57ef8d78d7: Download complete
105182bb5e8b: Download complete
511136ea3c5a: Download complete
73bd853d2ea5: Download complete
....

Status: Downloaded newer image for ubuntu

拉取完成后,使用 docker image ls 命令(或 docker images 简写)查看已拉取的镜像。下面的示例展示了所有 本地存在的 ubuntu 镜像:

$ docker image ls --filter reference=ubuntu
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
ubuntu       22.04     8a3cdc4d1ad3   3 weeks ago    77.9MB
ubuntu       jammy     8a3cdc4d1ad3   3 weeks ago    77.9MB
ubuntu       24.04     35a88802559d   6 weeks ago    78.1MB
ubuntu       latest    35a88802559d   6 weeks ago    78.1MB
ubuntu       noble     35a88802559d   6 weeks ago    78.1MB

取消拉取

例如,当 docker pull 进程在终端中运行时,通过按 CTRL-c 键将其终止,将中断拉取操作。

$ docker pull ubuntu

Using default tag: latest
latest: Pulling from library/ubuntu
a3ed95caeb02: Pulling fs layer
236608c7b546: Pulling fs layer
^C

当守护进程与客户端(发起拉取操作)之间的连接因任何原因中断或丢失,或者命令被手动终止时,引擎将终止拉取操作。