码头工人拉

描述

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

用法

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

扩展说明

您的大多数映像都将在Docker Hub注册表的基础映像之上创建 。

Docker Hub包含许多预构建的映像,您可以pull尝试这些映像,而无需定义和配置自己的映像。

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

代理配置

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

并发下载

默认情况下,Docker守护程序将一次提取三层图像。如果您使用的是低带宽连接,则可能会导致超时问题,并且您可能希望通过--max-concurrent-downloads守护程序选项来降低这种情况。有关更多详细信息,请参见 守护程序文档

有关此命令的示例用法,请参阅下面的示例部分

选项

名称,简写 默认 描述
--all-tags-a 下载存储库中所有标记的图像
--disable-content-trust true 跳过图像验证
--platform API 1.32+
设置平台(如果服务器具有多平台功能)
--quiet-q 禁止详细输出

例子

从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,因为它们实际上是用不同名称标记的同一图像。因为它们是同一映像,所以它们的层仅存储一次,并且不会占用额外的磁盘空间。

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

按摘要提取图像(不可变标识符)

到目前为止,您已经按图像的名称(和“标签”)提取了图像。使用名称和标签是处理图像的便捷方法。使用标签时,您可以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

拉取完成后,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
LABEL maintainer="some maintainer <maintainer@example.com>"

笔记

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

从其他注册表中提取

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

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

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

注册表凭证由docker login管理。

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

拉出具有多个图像的存储库

默认情况下,从注册表中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 Engine守护程序与发起拉取的Docker Engine客户端之间的连接丢失时,引擎会终止拉取操作。如果与Engine守护程序的连接由于手动交互以外的其他原因而丢失,则拉取操作也会中止。

上级命令

命令 描述
码头工人 Docker CLI的基本命令。