Docker 學習筆記 ---Docker元件
Docker元件
1、 客戶端:dockerclient
2、 服務端:dockerserver
3、 Docker映象
4、 Registry
5、 Docker 容器
Docker客戶端與伺服器
Docker 是一個客戶端、服務端(C/S)架構的程式。Docker客戶端只需向Docker伺服器或守護程序發出請求,伺服器或守護程序將完成所有工作並返回結果。Docker守護程序有時也稱為Docker引擎。Docker提供了一個命令列工具docker以及一整套RESTful API來與守護程序互動。使用者可以在同一臺宿主機上執行Docker守護程序和客戶端,也可以從本地的Docker客戶端連線到執行在另一臺宿主機上的遠端Docker守護程序。
docker client是一個泛稱,它可以是命令列docker,也可以是遵循了docker api規則的客戶端,簡單地說可以理解為一個用於互動/傳送指令的介面。
2、 Docker映象
映象是一個只讀的容器模板,含有啟動docker容器所需的檔案系統結構及內容
Docker以映象和在映象基礎上構建的容器為基礎,以容器開發、測試、釋出的單元將應用相關的所有元件和環境進行封裝,避免了應用在不同平臺間遷移所帶來的依賴問題,確保了應用在生產環境的各階段達到高度一致的實際效果。
-
分層機制
docker的映象機制是有層次感的,一個映象可以放到另一個映象的頂部。位於下端的為父映象,以此類推;最底部的映象可稱為基礎映象。
映象採用分層構建,每個映象由一系列的映象層組成, 當需要修改容器內的某個檔案時,只對處於最上方的讀寫層進行變動,不覆蓋下面已有檔案系統的內容。 當提交這個修改過的容器檔案系統為一個新的映象時,儲存的內容僅為最上層讀寫檔案系統中被更新過的檔案。
-
+ bootfs 主要包含bootloader和kernel, bootloader主要是引導載入kernel, 當容器啟動成功後,kernel被載入到記憶體中後而引導檔案系統則會被解除安裝unmount+ rootfs 是容器在啟動時內部程序可見的檔案系統,通常包含一個作業系統執行所需的檔案系統 + 傳統linux在核心啟動時首先會掛載一個只讀的rootfs,檢測器完整性之後再切換為讀寫模式 + docker在掛載rootfs時也將其設為只讀模式,掛載完畢後利用聯合掛載技術在已有的只讀rootfs上再掛載一個讀寫層。 + 只有執行中檔案系統發生變化,才會把變化的內容寫到讀寫層,並隱藏只讀層中的老版本檔案 + rootfs包含的就是典型Linux系統中的 /dev,/proc,/bin, /etc等標準目錄和檔案。
-
寫時複製
-
可以在多個容器之間共享映象,每個容器啟動時不需要單獨複製一份映象檔案
-
將所有映象層以只讀方式掛載到一個掛載點,在上面覆蓋一個可讀寫的容器層。
-
寫時複製配合分層機制減少了映象對磁碟空間的佔用和容器啟動時間
-
內容定址
-
根據內容來索引映象和映象層
-
是對映象層的內容計算檢驗和,生成一個內容雜湊值作為映象層的唯一標識
-
對於來自不同構建的映象層,只要擁有相同的內容雜湊,也能被不同映象共享
-
聯合掛載
可以在一個掛載點掛載多個檔案系統,將掛載點的原目錄與被掛在內容進行整合,最終可見的檔案系統將包含整合後各層的檔案和目錄 -
讀寫層處於容器檔案系統的最頂層,其下可能聯合掛載多個只讀層。
-
3、 Register
Docker用Register來儲存使用者構建的映象。Register分為公共和私有兩種。Docker公司運營的公共Register叫做Docker Hub。使用者可以在Docker Hub註冊賬戶,分享並保持自己的映象。
使用者也可以在Docker Hub上儲存自己的私有映象。
4、容器
Docker 可以幫使用者構建和部署容器,使用者只需把自己的應用程式或者服務打包放進容器即可。容器是基於映象啟動起來的,容器中可以執行一個或者多個程序。我們可以認為,映象是Docker生命週期中的構建或者打包階段,而容器則是啟動或執行階段。
總結起來,Docker容器就是:
- 一個映象格式
- 一系列標準的操作
- 一個執行環境。
映象可以被建立、啟動、關閉、重啟以及銷燬。