Docker命令-docker pull

docker pull

原文

描述

从镜像仓库拉取镜像。

使用

$ docker pull [options] name[:tag|@digest] 

name 镜像名称后面可以跟上镜像标签或者镜像摘要,这些可以在接下来的内容中讲解。

选项

名称 默认 描述
--all-tags, a 下载仓库所有镜像
--disable-content-trust true 跳过镜像校验
--platform 设置镜像所属平台, 如果有多个镜像服务.

父明令

命令 描述
docker The base command for the Docker CLI.

详细描述

你所使用的大多数镜像都是基于Docker Hub上的基础镜像制作的。

Docker Hub上有很多预先构建好的镜像,你可以pull并使用它们,而不需要自己去定义和配置自己的镜像。

如想要下载一个或多个镜像就用docker pull.

代理配置

如果您的项目处于一些企业服务器中,您可能需要使用环境变量:HTTP_PROXY, HTTPS_PROXY, and NO_PROXY

设置Docker守护进程的服务代理。可以通过systemd来设置这些环境变量,参考:systemd config

并行下载(多线程下载?)

默认情况下,Docker守护程序将一次拉出三层镜像。 如果您的带宽比较低,可能会导致超时问题。您可以通过选项--max-concurrent-downloads来提高下载速度。 有关更多详细信息请参考:docker daemon

使用示例

从docker hub拉取镜像

拉取一个或多个镜像使用docker pull,如果没有指定镜像标签,docker默认使用:latest,下面的示例命令就会拉取最新的镜像文件,等同于:docker pull 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:latest共用两个相同的镜像层。在拉取debian: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 and debian:latest具有相同的ID是因为他们使用了相同的镜像,只是打了不同的标签而已。因为他们使用的是相同的镜像文件,他们的镜像层只会存储一次,且不会占用额外内存空间。

更多关于镜像层存储的问题可参考:storage driver

通过镜像摘要拉取镜像(不可变的身份标识)

目前为止我们都是通过镜像名称或者加标签的方式拉取镜像文件,显然这是一种很方便的拉取镜像的方式。如果使用了标签拉取,当你再次使用docker pull的时候可以确保你能拉取到最新的镜像文件。例如:docker pull ubuntu:14.04便可以拉取最新的Ubuntu 14.04镜像。

有时候你可能并不想获取最新的镜像文件,而是使用一个固定版本的镜像文件。docker提供了一种通过摘要digest拉取镜像的方式,这种方式你可以明确的指定镜像的版本号。这样你可以获得一个固定版本的镜像文件。并且确保你每次使用的时候都是同一个镜像文件。

想要获取镜像的摘要,需要先pull下一个镜像文件,例如:

$ 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

当你push一个镜像到某个仓库的时候,docker也会打印出其摘要信息,这样在你push完成之后便可以得到该镜像的最新版本摘要信息。

通过摘要方式拉取镜像:(只需要将摘要替换掉镜像标签tag即可)

$ 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

摘要拉取方式也可以在Dockerfile FROM 中使用,例如:

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

注意:如果使用了这样的固定版本方式,docker便不会拉取最新的镜像文件,这样可能导致一些安全问题,如果你想拉取最新的镜像那么你需要修改去修改摘要

从不同的仓库拉取镜像

默认情况下docker pull会从docker hub拉取镜像文件,也可以手动指定一个仓库地址拉取镜像。假如你设置了一个本地仓库地址,那么你只要指定这个地址拉取镜像即可。仓库地址类似一个URL,但是没有协议头http://

例如从一个镜像地址:myregistry.local:5000,拉取镜像文件:testing/test-image

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

docker仓库地址凭证由docker login管理。

docker与各个仓库地址默认以https://来通信,除非该仓库地址允许以不安全的链接方式访问,更多信息请参考docker-insecure-registries

同时拉取多个镜像文件

docker默认只会拉取一个镜像文件。一个镜像仓库可以包含多个镜像文件,如果想拉取多个镜像可以使用参数-a或者--all-tags

例如下面这个便会拉取所有的镜像文件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

取消拉取镜像文件

ctrl + c 即可。

$ docker pull fedora

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

注意:如果docker在拉取镜像文件的时候连接失败了也会终止拉取操作。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容