本節書摘來自華章社群《docker進階與實戰》一書中的第3章,第3.1節docker image概念介紹,作者華為docker實踐小組,更多章節内容可以通路雲栖社群“華章社群”公衆号檢視
3.1 docker image概念介紹
簡單地說,docker image是用來啟動容器的隻讀模闆,是容器啟動所需要的rootfs,類似于虛拟機所使用的鏡像。首先需要通過一定的規則和方法表示docker image,如圖3-1
所示。

圖3-1是典型的docker鏡像的表示方法,可以看到其被“/”分為了三個部分,其中每部分都可以類比github中的概念。下面按照從左到右的順序介紹這幾個部分以及相關的一些重要概念。
remote docker hub:集中存儲鏡像的web伺服器位址。該部分的存在使得可以區分從不同鏡像庫中拉取的鏡像。若docker的鏡像表示中缺少該部分,說明使用的是預設鏡像庫,即docker官方鏡像庫。
namespace:類似于github中的命名空間,是一個使用者或組織中所有鏡像的集合。
repository:類似于git倉庫,一個倉庫可以有多個鏡像,不同鏡像通過tag來區分。
tag:類似git倉庫中的tag,一般用來區分同一類鏡像的不同版本。
layer:鏡像由一系列層組成,每層都用64位的十六進制數表示,非常類似于git倉庫中的commit。
image id:鏡像最上層的layer id就是該鏡像的id,repo:tag提供了易于人類識别的名字,而id便于腳本處理、操作鏡像。
鏡像庫是docker公司最先提出的概念,非常類似應用市場的概念。使用者可以釋出自己的鏡像,也可以使用别人的鏡像。docker開源了鏡像存儲部分的源代碼(docker registry以及distribution),但是這些開源元件并不适合獨立地發揮功能,需要使用nginx等代理工具添加基本的鑒權功能,才能搭建出私有鏡像倉庫。本地鏡像則是已經下載下傳到本地的鏡像,可以使用docker images等指令進行管理。這些鏡像預設存儲在/var/lib/docker路徑下,該路徑也可以使用docker daemon –g參數在啟動daemon時指定。
提
示 docker的鏡像已經支援更多層級,比如使用者的命名空間之前可以包含組織(remote-dockerhub.com/group/namespace/bar:latest)。但是目前docker官方的鏡像庫還不具備該能力。