理解並爛熟於胸docker的核心概念,幫助你用起docker來得心應手

docker關鍵概念

理解並爛熟於胸docker的核心概念,幫助你用起docker來得心應手

在學習docker之前,把鏡像(image),容器(container)和層(layer)的概念牢記於心時極其有用的。這裡說說我的理解。首先虛線左邊是鏡像和層,他們都是隻有一份的靜態數據。鏡像是文件系統層和元數據的結合,層是在鏡像基礎上的可執行程序,它通過保存程序與鏡像的差異來儲存的,或者是程序1和程序2之間的差異儲存。這樣比較節省空間。虛線右邊就是這些應用程序的運行態。每次運行都是一個容器。

下面我們再仔細看看鏡像和容器的概念

理解並爛熟於胸docker的核心概念,幫助你用起docker來得心應手

之前說鏡像是文件系統和元數據的組合,那麼什麼是元數據呢?容器一般是用作服務器,那作為服務器肯定需要一些環境變量或者端口映射等數據,這樣用戶才能訪問到這個服務器。所以這些配置相關的描述性數據就被稱為元數據。鏡像和容器的關係可以看作程序和進程的關係,也可以看作對象和實例的關係。這其實還是比較好理解的。

最後再說說層(layer),為什麼要分層呢?

理解並爛熟於胸docker的核心概念,幫助你用起docker來得心應手

每個鏡像其實都需要有自己的文件系統,如上圖所示,單單是OS相關的必備的文件系統就有89M,而這些又是基本不會變化的部分。因此又必要劃出一個基本的OS層,這樣運行在同一臺機器上的所有鏡像可以共享一個OS層,這就為在一臺機器上運行多個不同的鏡像提供了最佳方案。另外,假如你在OS層的基礎上,還有一部分是你的很多鏡像都要用的功能,你也可以再定義一個層,這樣這個層也可以在其他鏡像間共享。


分享到:


相關文章: