Docker命令-docker pull

docker pull

原文

描述

從鏡像倉庫拉取鏡像。

使用

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

name 鏡像名稱后面可以跟上鏡像標(biāo)簽或者鏡像摘要,這些可以在接下來的內(nèi)容中講解。

選項(xiàng)

名稱 默認(rèn) 描述
--all-tags, a 下載倉庫所有鏡像
--disable-content-trust true 跳過鏡像校驗(yàn)
--platform 設(shè)置鏡像所屬平臺(tái), 如果有多個(gè)鏡像服務(wù).

父明令

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

詳細(xì)描述

你所使用的大多數(shù)鏡像都是基于Docker Hub上的基礎(chǔ)鏡像制作的。

Docker Hub上有很多預(yù)先構(gòu)建好的鏡像,你可以pull并使用它們,而不需要自己去定義和配置自己的鏡像。

如想要下載一個(gè)或多個(gè)鏡像就用docker pull.

代理配置

如果您的項(xiàng)目處于一些企業(yè)服務(wù)器中,您可能需要使用環(huán)境變量:HTTP_PROXY, HTTPS_PROXY, and NO_PROXY

設(shè)置Docker守護(hù)進(jìn)程的服務(wù)代理。可以通過systemd來設(shè)置這些環(huán)境變量,參考:systemd config

并行下載(多線程下載?)

默認(rèn)情況下,Docker守護(hù)程序?qū)⒁淮卫鋈龑隅R像。 如果您的帶寬比較低,可能會(huì)導(dǎo)致超時(shí)問題。您可以通過選項(xiàng)--max-concurrent-downloads來提高下載速度。 有關(guān)更多詳細(xì)信息請(qǐng)參考:docker daemon

使用示例

從docker hub拉取鏡像

拉取一個(gè)或多個(gè)鏡像使用docker pull,如果沒有指定鏡像標(biāo)簽,docker默認(rèn)使用:latest,下面的示例命令就會(huì)拉取最新的鏡像文件,等同于: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鏡像基本都是由多層組成(分層存儲(chǔ)),上面的鏡像文件就是由兩層構(gòu)成:fdd5d7827f33a3ed95caeb02.

每一層都可以被不同鏡像共同使用,例如下面這個(gè)鏡像debian:jessie就是與上述debian:latest共用兩個(gè)相同的鏡像層。在拉取debian:jessie的時(shí)候只會(huì)拉取其自身的一些元數(shù)據(jù)信息,而不會(huì)再去拉取鏡像分層信息,因?yàn)樵诒镜匾呀?jīng)存在了這兩個(gè)鏡像層。

$ 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使用內(nèi)存尋址方式來存儲(chǔ)鏡像文件,鏡像文件ID是通過SHA256摘要方式包含其配置和鏡像層,上述例子中debian:jessie and debian:latest具有相同的ID是因?yàn)樗麄兪褂昧讼嗤溺R像,只是打了不同的標(biāo)簽而已。因?yàn)樗麄兪褂玫氖窍嗤溺R像文件,他們的鏡像層只會(huì)存儲(chǔ)一次,且不會(huì)占用額外內(nèi)存空間。

更多關(guān)于鏡像層存儲(chǔ)的問題可參考:storage driver

通過鏡像摘要拉取鏡像(不可變的身份標(biāo)識(shí))

目前為止我們都是通過鏡像名稱或者加標(biāo)簽的方式拉取鏡像文件,顯然這是一種很方便的拉取鏡像的方式。如果使用了標(biāo)簽拉取,當(dāng)你再次使用docker pull的時(shí)候可以確保你能拉取到最新的鏡像文件。例如:docker pull ubuntu:14.04便可以拉取最新的Ubuntu 14.04鏡像。

有時(shí)候你可能并不想獲取最新的鏡像文件,而是使用一個(gè)固定版本的鏡像文件。docker提供了一種通過摘要digest拉取鏡像的方式,這種方式你可以明確的指定鏡像的版本號(hào)。這樣你可以獲得一個(gè)固定版本的鏡像文件。并且確保你每次使用的時(shí)候都是同一個(gè)鏡像文件。

想要獲取鏡像的摘要,需要先pull下一個(gè)鏡像文件,例如:

$ 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已經(jīng)幫我們打印出了該鏡像的摘要:

sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2

當(dāng)你push一個(gè)鏡像到某個(gè)倉庫的時(shí)候,docker也會(huì)打印出其摘要信息,這樣在你push完成之后便可以得到該鏡像的最新版本摘要信息。

通過摘要方式拉取鏡像:(只需要將摘要替換掉鏡像標(biāo)簽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便不會(huì)拉取最新的鏡像文件,這樣可能導(dǎo)致一些安全問題,如果你想拉取最新的鏡像那么你需要修改去修改摘要

從不同的倉庫拉取鏡像

默認(rèn)情況下docker pull會(huì)從docker hub拉取鏡像文件,也可以手動(dòng)指定一個(gè)倉庫地址拉取鏡像。假如你設(shè)置了一個(gè)本地倉庫地址,那么你只要指定這個(gè)地址拉取鏡像即可。倉庫地址類似一個(gè)URL,但是沒有協(xié)議頭http://。

例如從一個(gè)鏡像地址:myregistry.local:5000,拉取鏡像文件:testing/test-image

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

docker倉庫地址憑證由docker login管理。

docker與各個(gè)倉庫地址默認(rèn)以https://來通信,除非該倉庫地址允許以不安全的鏈接方式訪問,更多信息請(qǐng)參考docker-insecure-registries

同時(shí)拉取多個(gè)鏡像文件

docker默認(rèn)只會(huì)拉取一個(gè)鏡像文件。一個(gè)鏡像倉庫可以包含多個(gè)鏡像文件,如果想拉取多個(gè)鏡像可以使用參數(shù)-a或者--all-tags。

例如下面這個(gè)便會(huì)拉取所有的鏡像文件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在拉取鏡像文件的時(shí)候連接失敗了也會(huì)終止拉取操作。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容