【转】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

摘要拉取方式也可以在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在拉取镜像文件的时候连接失败了也会终止拉取操作。

 
 
3人点赞
 
docker
 

from:https://www.jianshu.com/p/f0c6302e869e

原文地址:https://www.cnblogs.com/xuan52rock/p/12485480.html