docker 镜像拉取

描述从注册表下载图像
用法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:22.04拉取最新版本的 Ubuntu 22.04 映像。

在某些情况下,您不希望将图像更新到较新的版本,但更喜欢使用图像的固定版本。 Docker 使您能够通过摘要提取图像。通过摘要拉取映像时,您需要准确指定要拉取的映像版本。这样做可以让您将图像“固定”到该版本,并保证您使用的图像始终相同。

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

$ docker pull ubuntu:22.04

22.04: Pulling from library/ubuntu
125a6e411906: Pull complete
Digest: sha256:26c68657ccce2cb0a31b330cb0be2b5e108d467f641c62e13ab40cbec258c68d
Status: Downloaded newer image for ubuntu:22.04
docker.io/library/ubuntu:22.04

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

sha256:26c68657ccce2cb0a31b330cb0be2b5e108d467f641c62e13ab40cbec258c68d

当推送到注册表时,Docker 还会打印图像的摘要。如果您想固定到刚刚推送的图像版本,这可能很有用。

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

$ docker pull ubuntu@sha256:26c68657ccce2cb0a31b330cb0be2b5e108d467f641c62e13ab40cbec258c68d

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

Digest 也可以用在FROMDockerfile 中,例如:

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

笔记

使用此功能可以将图像及时“固定”到特定版本。因此,Docker 不会提取映像的更新版本,其中可能包括安全更新。如果您想提取更新的图像,则需要相应地更改摘要。

从不同的注册表中提取

默认情况下,从Docker Hubdocker pull拉取镜像 。还可以手动指定要从中提取的注册表的路径。例如,如果您设置了本地注册表,则可以指定从中提取的路径。注册表路径类似于 URL,但不包含协议说明符 ( )。https://

以下命令testing/test-image从侦听端口 5000 ( ) 的本地注册表中提取映像myregistry.local:5000

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

注册表凭据由 docker login管理。

Docker 使用该https://协议与注册表进行通信,除非允许通过不安全的连接访问注册表。有关详细信息,请参阅 不安全的注册表部分。

拉取包含多个映像的存储库(-a、--all-tags)

默认情况下,docker pull从注册表中提取单个映像。一个存储库可以包含多个图像。要从存储库中提取所有图像,请 在使用时提供-a(或) 选项。--all-tagsdocker 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       18.04     c6ad7e71ba7d   5 weeks ago    63.2MB
ubuntu       bionic    c6ad7e71ba7d   5 weeks ago    63.2MB
ubuntu       22.04     5ccefbfc0416   2 months ago   78MB
ubuntu       focal     ff0fea8310f3   2 months ago   72.8MB
ubuntu       latest    ff0fea8310f3   2 months ago   72.8MB
ubuntu       jammy     41ba606c8ab9   3 months ago   79MB
ubuntu       20.04     ba6acccedd29   7 months ago   72.8MB

取消拉取

终止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

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