Docker系列之相關概念

Docker概念與傳統虛擬化技術的差異

  • Docker 實現的是基於進程級別的虛擬化實現,其與傳統虛擬化技術最大的區別在於:傳統虛擬化技術運行於一套完整的虛擬化硬件基礎之上,而Docker容器則直接運行於宿主機硬件之上。
  • 基於以上概念的不同,Docker相較於傳統虛擬化技術有更高的資源利用率;
    傳統虛擬化技術:客戶機只能利用所分配的硬件資源;而且當前客戶機資源空閒時,其他客戶機或者宿主機也無法利用空閒資源,當客戶機資源不足時,客戶機可能出現宕機的風險。
    Docker:客戶機直接使用宿主機硬件資源,意味着Docker客戶機和宿主機之間的資源是共享的,不會造成資源浪費,在宿主機硬件資源充足的情況下Docker客戶機也不存在資源不足的情況。

Docker架構

圖片網上扒的,看看就行了0.0;從圖中可以看到,Docker整體是C/S的結構,開發者可以使用Docker CLI 通過調用 Docker 的 API 接口,與Docker 服務器交互。
下面大致介紹一下幾個主要的角色
在這裏插入圖片描述

  • 鏡像(Images)
    鏡像在倉庫中的存儲方式與Maven中的jar包類似,可以對比理解。
    Maven中,開發者要定位某個jar包,需要使用 GAV座標來指定:
    一個指定的組,組下面指定的包名,同一個包指定的版本;
    鏡像也是類似的:
    【倉庫名/軟件名:標籤(版本號) 】這樣的格式來指定一個Docker鏡像

  • 容器(Container)
    鏡像和容器是密切相關的,簡單來說,鏡像是靜態的,容器是運行時的鏡像,在鏡像的基礎之前添加了容器運行時的存儲層。有點類似於,Java裏面的 類和對象的關係。Docker借用了面向對象的思想,它的鏡像可以繼承,實現鏡像複用。

  • 倉庫
    Docker倉庫的概念有點類似於 Maven,是用來管理Docker鏡像的。所以開發者也有必要創建私服,用來管理自己項目的Docker鏡像(這個後面再說)。

  • 網絡(network)和數據卷(data volumes)
    前面也說了 Docker 是一種虛擬技術,所以內部是有完整的操作系統結構的,其中就包含了網絡通信這一塊;至於數據卷,我們知道,容器運行一旦結束並銷燬後,容器內的任何東西都是會被銷燬的(這一點可以類比Java的對象,對象被GC回收後,對象所承載的數據都隨着對象銷燬),數據卷就是獨立於容器的數據存儲的這樣一個概念。所以,開發者在構建自己應用程序的鏡像時,不要在容器內部存儲任何數據,可以將數據存儲在數據卷或者將存儲路徑映射到宿主機的指定路徑

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章