docker 镜像拉取

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

描述

您的大多数镜像都将在 Docker Hub 注册表中的基础镜像之上创建。

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

要下载特定镜像或一组镜像(即存储库), 用docker pull.

代理配置

如果您位于 HTTP 代理服务器后面,例如在公司设置中, 在打开 Connect to Registry 之前,您可能需要配置 Docker daemon 的代理设置,有关详细信息,请参阅 dockerd 命令行参考

并发下载

默认情况下,Docker 守护程序将一次提取镜像的三个层。 如果您使用的是低带宽连接,这可能会导致超时问题,并且您可能希望降低 this 通过--max-concurrent-downloadsdaemon 选项。有关更多详细信息,请参阅 daemon 文档

选项

选择违约描述
-a, --all-tags下载存储库中所有标记的镜像
--disable-content-trusttrue跳过镜像验证
--platform接口 1.32+如果服务器支持多平台,则设置 platform
-q, --quietSuppress verbose 输出

例子

从 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:bookwormimage 因此 仅提取其元数据,而不提取其层,因为该层已经存在 本地:

$ 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 digest 中介绍镜像的配置和层。在上面的示例中,debian:bookwormdebian:latest具有相同的镜像 ID,因为它们是 同一镜像使用不同的名称标记。因为他们是同一个形象, 它们的图层只存储一次,不会占用额外的磁盘空间。

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

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

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

在某些情况下,您不希望将镜像更新到较新版本,但更喜欢 以使用镜像的固定版本。Docker 允许您通过其 消化。按摘要拉取镜像时,您可以准确指定哪个版本 要拉取的镜像。这样做,允许您将镜像“固定”到该版本。 并保证您使用的镜像始终相同。

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

$ 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 还会在推送到注册表时打印镜像的摘要。这 如果要固定到刚刚推送的镜像版本,则可能很有用。

在拉取镜像时,摘要将代替标签,例如,将 通过 Digest 拉取上面的镜像,运行以下命令:

$ 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 也可以在FROM的 Dockerfile 中,例如:

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

注意

使用此功能可将镜像及时“固定”到特定版本。 因此,Docker 不会拉取镜像的更新版本,其中可能包括 安全更新。如果要拉取更新的镜像,则需要更改 相应地消化。

从其他注册表中提取

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

以下命令将testing/test-image来自本地注册表的镜像 侦听端口 5000 (myregistry.local:5000):

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

注册表凭证由 docker login 管理。

Docker 使用https://协议与注册表通信,除非 允许通过不安全的连接访问 registry。请参阅 不安全注册表 部分以了解更多信息。

拉取具有多个镜像的存储库 (-a, --all-tags)

默认情况下,docker pull从注册表中提取单个镜像。存储库 可以包含多个镜像。要从存储库中提取所有镜像,请提供-a(或--all-tags) 选项。docker pull.

此命令从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虽然它是 在终端中运行,将终止 pull作。

$ docker pull ubuntu

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

当守护进程 并且客户端(启动拉取)由于任何原因被切断或丢失,或者 命令被手动终止。