首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

docker pull

描述

从注册表中提取图像或存储库

用法

代码语言:javascript
复制
docker pull [OPTIONS] NAME[:TAG|@DIGEST]

选项

名称,简写

默认

描述

--all-tags,-a

false

下载存储库中的所有标记图像

--disable-content-trust

true

跳过图像验证

父命令

命令

描述

docker

Docker CLI的基本命令。

扩展描述

大部分图像将在Docker Hub注册表的基础图像上创建。

Docker Hub包含许多预构建的图像,您无需定义和配置自己的图像即可进行尝试pull

要下载特定图像或一组图像(即存储库),请使用docker pull

代理配置

如果你是后面的HTTP代理服务器,例如在公司的设置,前打开一个连接到注册表,您可能需要配置多克守护进程的代理设置,使用HTTP_PROXYHTTPS_PROXYNO_PROXY环境变量。要在使用的主机上设置这些环境变量systemd,请参阅控制并使用systemd配置Docker以获取变量配置。

并发下载

默认情况下,Docker守护进程将一次拉出三层图像。如果您使用的是低带宽连接,则可能会导致超时问题,您可能需要通过--max-concurrent-downloads守护进程选项降低此问题。有关更多详细信息,请参阅守护程序文档。

实例

从Docker Hub中提取图像

要下载特定图像或一组图像(即存储库),请使用docker pull。如果未提供标签,则Docker Engine将该:latest标签用作默认标签。该命令会拉出debian:latest图像:

代码语言:javascript
复制
$ docker pull debian

Using default tag: latest
latest: Pulling from library/debian
fdd5d7827f33: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:e7d38b3517548a1c71e41bffe9c8ae6d6d29546ce46bf62159837aad072c90aa
Status: Downloaded newer image for debian:latest

Docker映像可以由多个图层组成。在上面的例子中,图像由两层组成,fdd5d7827f33a3ed95caeb02

图层可以重复使用图层。例如,debian:jessie图像与两个图层共享debian:latestdebian:jessie因此,拉取图像只会拉取其元数据,而不是其图层,因为所有图层都已经存在于本地:

代码语言:javascript
复制
$ docker pull debian:jessie

jessie: Pulling from library/debian
fdd5d7827f33: Already exists
a3ed95caeb02: Already exists
Digest: sha256:a9c958be96d7d40df920e7041608f2f017af81800ca5ad23e327bc402626b58e
Status: Downloaded newer image for debian:jessie

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

代码语言:javascript
复制
$ docker images

REPOSITORY   TAG      IMAGE ID        CREATED      SIZE
debian       jessie   f50f9524513f    5 days ago   125.1 MB
debian       latest   f50f9524513f    5 days ago   125.1 MB

Docker使用内容可寻址的图像存储,图像ID是一个涵盖图像配置和图层的SHA256摘要。在上面的例子中,debian:jessie并且debian:latest具有相同的图像ID,因为它们实际上是用不同名称标记的相同图像。由于它们是相同的图像,因此它们的图层只能存储一次,并且不会占用额外的磁盘空间。

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

通过digest(不可变标识符)提取图像

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

在某些情况下,您不希望将图像更新为新版本,但更喜欢使用固定版本的图像。Docker使您能够通过摘要来提取图像。当通过拉动摘要的图像,你指定确切的图像的版本,拉其。这样做,可让您将图像“钉”到该版本,并确保您使用的图像始终保持不变。

要知道图像的摘要,请先拉取图像。让我们ubuntu:14.04从Docker Hub中提取最新的图像:

代码语言:javascript
复制
$ docker pull ubuntu:14.04

14.04: Pulling from library/ubuntu
5a132a7e7af1: Pull complete
fd2731e4c50c: Pull complete
28a2f68d1120: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
Status: Downloaded newer image for ubuntu:14.04

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

代码语言:javascript
复制
sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2

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

当摘取图片时摘要代替标签,例如,通过摘要拉出上面的图片,运行以下命令:

代码语言:javascript
复制
$ docker pull ubuntu@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2

sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2: Pulling from library/ubuntu
5a132a7e7af1: Already exists
fd2731e4c50c: Already exists
28a2f68d1120: Already exists
a3ed95caeb02: Already exists
Digest: sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
Status: Downloaded newer image for ubuntu@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2

摘要也可以在FROMDockerfile中使用,例如:

代码语言:javascript
复制
FROM ubuntu@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
MAINTAINER some maintainer <maintainer@example.com>

注意:使用此功能可以及时将图像“钉”到特定版本。因此,Docker不会提取图像的更新版本,其中可能包含安全更新。如果你想拉一个更新的图像,你需要相应地更改摘要。

从不同的注册表中提取

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

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

代码语言:javascript
复制
$ docker pull myregistry.local:5000/testing/test-image

注册表凭证由docker登录管理。

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

使用多个图像拉取一个存储库

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

此命令从fedora储存库:

代码语言:javascript
复制
$ docker pull --all-tags fedora

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

Status: Downloaded newer image for fedora

拉动完成后,使用该docker images命令查看拉出的图像。以下示例显示了fedora本地存在的所有图像:

代码语言:javascript
复制
$ docker images fedora

REPOSITORY   TAG         IMAGE ID        CREATED      SIZE
fedora       rawhide     ad57ef8d78d7    5 days ago   359.3 MB
fedora       20          105182bb5e8b    5 days ago   372.7 MB
fedora       heisenbug   105182bb5e8b    5 days ago   372.7 MB
fedora       latest      105182bb5e8b    5 days ago   372.7 MB

取消拉

docker pull例如通过CTRL-c在终端中运行时按下该进程来终止拉取操作。

代码语言:javascript
复制
$ docker pull fedora

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

注意:从技术上讲,当Docker引擎守护程序和启动引发的Docker引擎客户端之间的连接丢失时,引擎会终止一次pull操作。如果与引擎守护进程的连接由于其他原因(而不是手动交互)而丢失,则拉也会中止。

扫码关注腾讯云开发者

领取腾讯云代金券