docker的核心元件如下:
(推薦教學:docker教學)
1、 客戶端:dockerclient
2、 服務端:dockerserver
3、 Docker映像
4、 Registry
#5、 Docker 容器
本文會給大家簡單介紹這些元件的作用並簡述他們是如何相互協作的
1、 docker客戶端與伺服器
docker client向docker daemon發送請求,docker daemon完成相應的任務,並把結果回饋給容器
docker client是一個泛稱,它可以是命令列docker,也可以是遵循了docker api規則的客戶端,簡單地說可以理解為一個用於交互/發送指令的接口。
如下圖:
2、 docker映像
docker鏡像是一個唯讀的模板,是啟動一個容器的基礎。其中包括了容器的檔案系統結構與內容,它與docker的設定檔共同組成了docker容器的靜態檔案系統環境
docker映像在設計上有許多特別之處:
1) 分層機制
docker的映像機制是有層次感的,一個映像可以放到另一個映像的頂部。位於下端的為父鏡像,以此類推;最底部的鏡像可稱為基礎鏡像。最後從一個映像啟動容器時,docker會在映像的最頂層載入一個讀寫的檔案系統,我們想要在docker上執行的程式就是在這個讀寫層中執行的。
怕你沒看懂,上圖
當我啟動容器之後,我們接觸的是最頂層的可寫容器,最頂層的鏡像以處於他下發層的鏡像迭代構建而成。接下來引出docker映像的另一個特性,寫時複製:
(2)寫時複製
還是看剛剛那張圖,剛開始運行的時候可寫容器與頂層的鏡像內容是完全一致的;當我對內容進行修改的時候,文件會從下一層的鏡像(只讀層)複製到頂層的可寫容器(讀寫層),只讀層的文件依然存在,但是會被讀寫層的文件所隱藏;在容器中所做的所有操作,都不會影響底層的原有數據,除非你把他打包成一個新的鏡像。
3、 registry
我們要從何處去取得鏡像?如果我們是第一次透過某個映像去啟動容器,首先宿主機回去/var/lib/docker目錄下去找,如果沒有找到,則會去registry中去下載鏡像並且存放於虛擬機,然後完成啟動。
registry可以想像為一個映像的倉庫,預設的registry是docker官方提供的registry服務,名為Docker Hub。當然,你也可以建造自己的鏡像倉庫。
4、 docker容器
容器就是映像的運作實例。
使用者可以透過命令列或是 API 啟動、停止、移動或刪除容器。可以這麼認為,對於應用軟體,鏡像是軟體生命週期的建置和打包階段,而容器則是啟動和運行階段。
以上是docker的核心元件是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!