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-downloads
daemon 选项。有关更多详细信息,请参阅 daemon 文档。
选项
选择 | 违约 | 描述 |
---|---|---|
-a, --all-tags | 下载存储库中所有标记的镜像 | |
--disable-content-trust | true | 跳过镜像验证 |
--platform | 接口 1.32+如果服务器支持多平台,则设置 platform | |
-q, --quiet | Suppress 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:bookworm
image 因此
仅提取其元数据,而不提取其层,因为该层已经存在
本地:
$ 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:bookworm
和debian: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 pull
从 Docker 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
当守护进程 并且客户端(启动拉取)由于任何原因被切断或丢失,或者 命令被手动终止。