- Docker技術入門與實戰(第3版)
- 楊保華 戴王劍 曹亞侖
- 911字
- 2018-11-08 18:34:10
3.1 獲取鏡像
鏡像是運行容器的前提,官方的Docker Hub網站已經提供了數十萬個鏡像供大家開放下載。本節主要介紹Docker鏡像的pull子命令。
可以使用docker [image] pull命令直接從Docker Hub鏡像源來下載鏡像。該命令的格式為docker [image] pull NAME[:TAG]。
其中,NAME是鏡像倉庫名稱(用來區分鏡像), TAG是鏡像的標簽(往往用來表示版本信息)。通常情況下,描述一個鏡像需要包括“名稱+標簽”信息。
例如,獲取一個Ubuntu 18.04系統的基礎鏡像可以使用如下的命令:
$ docker pull ubuntu:18.04 18.04: Pulling from library/ubuntu
... Digest: sha256:e27e9d7f7f28d67aa9e2d7540bdc2b33254b452ee8e60f388875e5b7d9b2b696 Status: Downloaded newer image for ubuntu:18.04
對于Docker鏡像來說,如果不顯式指定TAG,則默認會選擇latest標簽,這會下載倉庫中最新版本的鏡像。
下面的例子將從Docker Hub的Ubuntu倉庫下載一個最新版本的Ubuntu操作系統的鏡像:
$ docker pull ubuntu Using default tag: latest latest: Pulling from library/ubuntu ... Digest: sha256:e27e9d7f7f28d67aa9e2d7540bdc2b33254b452ee8e60f388875e5b7d9b2b696 Status: Downloaded newer image for ubuntu:latest
該命令實際上下載的就是ubuntu:latest鏡像。
注意
一般來說,鏡像的latest標簽意味著該鏡像的內容會跟蹤最新版本的變更而變化,內容是不穩定的。因此,從穩定性上考慮,不要在生產環境中忽略鏡像的標簽信息或使用默認的latest標記的鏡像。
下載過程中可以看出,鏡像文件一般由若干層(layer)組成,6c953ac5d795這樣的串是層的唯一id(實際上完整的id包括256比特,64個十六進制字符組成)。使用docker pull命令下載中會獲取并輸出鏡像的各層信息。當不同的鏡像包括相同的層時,本地僅存儲了層的一份內容,減小了存儲空間。
讀者可能會想到,在不同的鏡像倉庫服務器的情況下,可能會出現鏡像重名的情況。
嚴格地講,鏡像的倉庫名稱中還應該添加倉庫地址(即registry,注冊服務器)作為前綴,只是默認使用的是官方Docker Hub服務,該前綴可以忽略。
例如,docker pull ubuntu:18.04命令相當于docker pull registry.hub.docker.com/ubuntu:18.04命令,即從默認的注冊服務器Docker Hub Registry中的ubuntu倉庫來下載標記為18.04的鏡像。
如果從非官方的倉庫下載,則需要在倉庫名稱前指定完整的倉庫地址。例如從網易蜂巢的鏡像源來下載ubuntu:18.04鏡像,可以使用如下命令,此時下載的鏡像名稱為hub.c.163.com/public/ubuntu:18.04:
$ docker pull hub.c.163.com/public/ubuntu:18.04
pull子命令支持的選項主要包括:
? -a, --all-tags=true|false:是否獲取倉庫中的所有鏡像,默認為否;
? --disable-content-trust:取消鏡像的內容校驗,默認為真。
另外,有時需要使用鏡像代理服務來加速Docker鏡像獲取過程,可以在Docker服務啟動配置中增加--registry-mirror=proxy_URL來指定鏡像代理服務地址(如https://registry.docker-cn.com)。
下載鏡像到本地后,即可隨時使用該鏡像了,例如利用該鏡像創建一個容器,在其中運行bash應用,執行打印“Hello World”命令:
$ docker run -it ubuntu:18.04 bash root@65663247040f:/# echo "Hello World" Hello World root@65663247040f:/# exit
- 手機安全和可信應用開發指南:TrustZone與OP-TEE技術詳解
- ASP.NET Core:Cloud-ready,Enterprise Web Application Development
- 極簡算法史:從數學到機器的故事
- JavaScript前端開發模塊化教程
- SpringMVC+MyBatis快速開發與項目實戰
- C語言程序設計立體化案例教程
- PHP 編程從入門到實踐
- Mastering Drupal 8 Views
- Spring Boot企業級項目開發實戰
- 前端HTML+CSS修煉之道(視頻同步+直播)
- 單片機C語言程序設計實訓100例
- JavaScript動態網頁編程
- Hadoop大數據分析技術
- Emotional Intelligence for IT Professionals
- Beginning PHP