非常教程

Docker 17参考手册

引擎: CLI | Engine: CLI

docker pull

描述

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

用法

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图像:

$ 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操作。如果与引擎守护进程的连接由于其他原因(而不是手动交互)而丢失,则拉也会中止。

引擎: CLI | Engine: CLI相关

1.守护进程CLI参考(dockerd)(引擎) | Daemon CLI reference (dockerd) (Engine)
2.docker
3.docker attach
4.docker build
5.docker checkpoint
6.docker checkpoint create
7.docker checkpoint ls
8.docker checkpoint rm
9.docker commit
10.docker config
11.docker config create
12.docker config inspect
13.docker config ls
14.docker config rm
15.docker container
16.docker container attach
17.docker container commit
18.docker container cp
19.docker container create
20.docker container diff
21.docker container exec
22.docker container export
23.docker container inspect
24.docker container kill
25.docker container logs
26.docker container ls
27.docker container pause
28.docker container port
29.docker container prune
30.docker container rename
31.docker container restart
32.docker container rm
33.docker container run
34.docker container start
35.docker container stats
36.docker container stop
37.docker container top
38.docker container unpause
39.docker container update
40.docker container wait
41.docker cp
42.docker create
43.docker deploy
44.docker diff
45.docker events
46.docker exec
47.docker export
48.docker history
49.docker image
50.docker image build
51.docker image history
52.docker image import
53.docker image inspect
54.docker image load
55.docker image ls
56.docker image prune
57.docker image pull
58.docker image push
59.docker image rm
60.docker image save
61.docker image tag
62.docker images
63.docker import
64.docker info
65.docker inspect
66.docker kill
67.docker load
68.docker login
69.docker logout
70.docker logs
71.docker network
72.docker network connect
73.docker network create
74.docker network disconnect
75.docker network inspect
76.docker network ls
77.docker network prune
78.docker network rm
79.docker node
80.docker node demote
81.docker node inspect
82.docker node ls
83.docker node promote
84.docker node ps
85.docker node rm
86.docker node update
87.docker pause
88.docker plugin
89.docker plugin create
90.docker plugin disable
91.docker plugin enable
92.docker plugin inspect
93.docker plugin install
94.docker plugin ls
95.docker plugin push
96.docker plugin rm
97.docker plugin set
98.docker plugin upgrade
99.docker port
100.docker ps
Docker 17

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

主页 https://docker.com/
源码 https://github.com/docker/docker
版本 17
发布版本 17.06