天天看點

《Docker技術入門與實戰》——2.1 核心概念

本節書摘來自華章計算機《docker技術入門與實戰》一書中的第2章,第2.1節,作者:楊保華,戴王劍,曹亞侖著, 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

docker鏡像

docker鏡像(image)類似于虛拟機鏡像,可以将它了解為一個面向docker引擎的隻讀模闆,包含了檔案系統。

例如:一個鏡像可以隻包含一個完整的ubuntu作業系統環境,可以把它稱為一個ubuntu鏡像。鏡像也可以安裝了apache應用程式(或使用者需要的其他軟體),可以把它稱為一個apache鏡像。

鏡像是建立docker容器的基礎。通過版本管理和增量的檔案系統,docker提供了一套十分簡單的機制來建立和更新現有的鏡像,使用者甚至可以從網上下載下傳一個已經做好的應用鏡像,并通過簡單的指令就可以直接使用。

docker容器

docker容器(container)類似于一個輕量級的沙箱,docker利用容器來運作和隔離應用。

容器是從鏡像建立的應用運作執行個體,可以将其啟動、開始、停止、删除,而這些容器都是互相隔離、互不可見的。

讀者可以把容器看做一個簡易版的linux系統環境(這包括root使用者權限、程序空間、使用者空間和網絡空間等),以及運作在其中的應用程式打包而成的應用盒子。

鏡像自身是隻讀的。容器從鏡像啟動的時候,docker會在鏡像的最上層建立一個可寫層,鏡像本身将保持不變。

docker倉庫

docker倉庫(repository)類似于代碼倉庫,是docker集中存放鏡像檔案的場所。

有時候會看到有資料将docker倉庫和注冊伺服器(registry)混為一談,并不嚴格區分。實際上,注冊伺服器是存放倉庫的地方,其上往往存放着多個倉庫。每個倉庫集中存放某一類鏡像,往往包括多個鏡像檔案,通過不同的标簽(tag)來進行區分。例如存放ubuntu作業系統鏡像的倉庫,稱為ubuntu倉庫,其中可能包括14.04、12.04等不同版本的鏡像。倉庫注冊伺服器的示例如圖2-1所示。

《Docker技術入門與實戰》——2.1 核心概念

根據所存儲的鏡像公開分享與否,docker倉庫可以分為公開倉庫(public)和私有倉庫(private)兩種形式。

目前,最大的公開倉庫是docker hub,存放了數量龐大的鏡像供使用者下載下傳。國内的公開倉庫包括docker pool等,可以提供穩定的國内通路。

當然,使用者如果不希望公開分享自己的鏡像檔案,docker也支援使用者在本地網絡内建立一個隻能自己通路的私有倉庫。

當使用者建立了自己的鏡像之後就可以使用push指令将它上傳到指定的公有或者私有倉庫。這樣使用者下次在另外一台機器上使用該鏡像時,隻需将其從倉庫上pull下來就可以了。

可以看出,docker利用倉庫管理鏡像的設計理念與git非常相似。