天天看點

[Docker]核心概念

1.  Docker鏡像

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

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

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

2. Docker容器

Docker容器(Container)類似于一個輕量級的沙箱,Docker利用容器來運作和隔離應用。容器是從鏡像建立的應用運作執行個體,可以将其啟動、開始、停止、删除,而這些容器都是互相隔離、互不可見的。

讀者可以把容器看做一個簡易版的Linux系統環境(這包括root使用者權限、程序空間、使用者空間和網絡空間等),以及運作在其中的應用程式打包而成的應用盒子。鏡像自身是隻讀的。容器從鏡像啟動的時候,Docker會在鏡像的最上層建立一個可寫層,鏡像本身将保持不變。

3. Docker倉庫

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

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

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

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

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

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