天天看點

docker系列—核心概念鏡像、容器、倉庫

docker核心概念

鏡像(Image)

容器(Container)

倉庫(Repository)

容器、倉庫、鏡像運作關系圖:

docker系列—核心概念鏡像、容器、倉庫

鏡像

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

鏡像是建立容器的基礎,一個鏡像可以建立多個容器。

站在開發的角度可以把鏡像了解為類(class)。

容器

docker容器(container)就是鏡像運作時執行個體。可以将其啟動、開始、停止、删除,而這些容器都是互相隔離、互不可見的。

可以把容器看做是一個簡易版的 Linux 環境(包括root使用者權限、程序空間、使用者空間和網絡空間等)和運作在其中的應用程式。

鏡像自身是隻讀的。容器從鏡像啟動的時候,Docker會在鏡像的最上層建立一個可寫層,鏡像本身将保持不變。就像用ISO裝系統之後,ISO并沒有什麼變化一樣。

倉庫

Docker倉庫(Repository)類似與代碼倉庫,是Docker集中存放鏡像檔案的場所。

有資料将Docker倉庫和**注冊伺服器(Registry)**混為一談,并不嚴格區分。實際上,

注冊伺服器是存放倉庫的地方,其上往往存放着多個倉庫。每個倉庫集中存放某一類鏡像,往往包括多個鏡像檔案,通過不同的标簽(tag)來進行區分

。例如存放Ubuntu作業系統鏡像的倉庫,稱為Ubuntu倉庫,其中可能包括14.04,12.04等不同版本的鏡像。

根據存儲的鏡像公開分享與否,Docker倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。

目前,最大的公開倉庫是Docker Hub,存放了數量龐大的鏡像供使用者下載下傳。國内的公開倉庫包括 阿裡雲、網易雲 等,可以提供穩定的國内通路。如果使用者不希望公開分享自己的鏡像檔案,Docker也支援使用者在本地網絡内建立一個隻能自己通路的私有倉庫。

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