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、 Registry(倉庫)

Docker用Registry來保存用戶構建的鏡像。Register分為公共和私有兩種。Docker公司運營的公共Registry叫做Docker Hub。用戶可以在Docker Hub注冊賬戶,分享並保持自己的鏡像。

用戶也可以在Docker Hub上保存自己的私有鏡像。

4、容器

Docker 可以幫用戶構建和部署容器,用戶只需把自己的應用程序或者服務打包放進容器即可。容器是基於鏡像啟動起來的,容器中可以運行一個或者多個進程。我們可以認為,鏡像是Docker生命周期中的構建或者打包階段,而容器則是啟動或執行階段。

總結起來,Docker容器就是:

  • 一個鏡像格式
  • 一系列標准的操作
  • 一個執行環境。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM