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-trust | true | 跳过图像验证 |
--platform | API 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:bookworm
和debian: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 也可以用在FROM
Dockerfile 中,例如:
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-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 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
当守护程序和客户端(启动拉取)之间的连接由于任何原因被切断或丢失或命令被手动终止时,引擎将终止拉取操作。