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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM