Docker 17
引擎: CLI | Engine: CLI

docker pull

docker pull

描述

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

用法

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

选项

名称,简写默认描述
--all-tags,-afalse下载存储库中的所有标记图像
--disable-content-trusttrue跳过图像验证

父命令

命令描述
dockerDocker 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图像:

$ 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因此,拉取图像只会拉取其元数据,而不是其图层,因为所有图层都已经存在于本地:

$ 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命令:

$ 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中提取最新的图像:

$ 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会打印图像的摘要。在上面的例子中,图像的摘要是:

sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2

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

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

$ 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中使用,例如:

FROM ubuntu@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2 MAINTAINER some maintainer <maintainer@example.com>

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

从不同的注册表中提取

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

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

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

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

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

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

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

此命令从fedora储存库:

$ 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本地存在的所有图像:

$ 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在终端中运行时按下该进程来终止拉取操作。

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

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