Docker 是什么
Docker是將發布程式運行所需要的所有環境打包到一起,自動化運行的容器;是一個開源專案,支持大部分的linux發行版,作業系統層以上的虛擬化技術,容器是完全使用沙箱機制,相互之間不會有任何介面,
Docker 架構圖
-
組成圖
-
傳統 hypervisor 組成圖
-
容器 Docker 架構圖
Docker 優缺點
對比傳統虛擬機Hypervisor和Docker容器組成圖:
| 專案 | 傳統虛擬機 | Docker虛擬機 |
|---|---|---|
| 占用空間 | "大" GB數量級 | "小" M數量級 |
| 啟動速度 | "慢" 分鐘級別 | "快" 毫秒級別 |
| 資源利用率 | "低" 一臺物理機裝多個虛擬作業系統 | "高" 一臺物理機裝一個作業系統啟動多個容器 |
| 運行基礎 | "Hypervisor" CPU 虛擬化技術 | "linux 內核" linux 內核虛擬化 |
| 部署 | "復雜" 先裝作業系統再裝應用 | "方便" 直接啟動鏡像 |
| 隔離 | 作業系統級別 | 容器級別 基于namespace隔離 |
| 相互通信 | "簡單" 作業系統間通信 | "復雜" 容器間通信 |
Docker 架構圖說明:
Docker有以下幾個部分組成:
Docker Client客戶端 通過Api 訪問Docker Daemon 管理Docker 鏡像
Docker Daemon 守護行程 負責Docker 鏡像的創建、洗掉、啟動、停止等服務
Docker Image鏡像 一張 “只讀” 的系統CD
Docker Container容器 Docker的容器,Docker Images運行實體,
Docker Registry : Docker Images的倉庫,Dock Hub https://www.dockerhub.com,
Docker 使用客戶端-服務器 (C/S) 架構模式,使用遠程API來管理和創建Docker容器,Docker 容器通過 Docker 鏡像來創建,容器與鏡像的關系類似于面向物件編程中的物件與類,
Docker daemon 作為服務端接受來自客戶的請求,并處理這些請求(創建、運行、分發容器), 客戶端和服務端既可以運行在一個機器上,也可通過 socket 或者RESTful API 來進行通信,
Docker 能做什么?
使應用的打包與部署自動化
創建輕量、私密的PAAS環境
實作自動化測驗和持續的集成/部署
部署與擴展webapp、資料庫和后臺服務
Docker 基礎概念
Docker 包括三個基本概念
鏡像(Image)
Docker 鏡像是一個特殊的檔案系統,除了提供容器運行時所需的程式、庫、資源、配置等檔案外,還包含了一些為運行時準備的一些配置引數(如匿名卷、環境變數、用戶等),鏡像不包含任何動態資料,其內容在構建之后也不會被改變,
鏡像構建時,會一層層構建,前一層是后一層的基礎,每一層構建完就不會再發生改變,后一層上的任何改變只發生在自己這一層,比如,洗掉前一層檔案的操作,實際不是真的洗掉前一層的檔案,而是僅在當前層標記為該檔案已洗掉,在最終容器運行的時候,雖然不會看到這個檔案,但是實際上該檔案會一直跟隨鏡像,
容器(Container)
鏡像(Image)和容器(Container)的關系,就像是面向物件程式設計中的 類 和 實體 一樣,鏡像是靜態的定義,容器是鏡像運行時的物體,容器可以被創建、啟動、停止、洗掉、暫停等,
倉庫(Repository)
一個 Docker Registry 中可以包含多個倉庫(Repository);每個倉庫可以包含多個標簽(Tag);每個標簽對應一個鏡像,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/33947.html
標籤:其他
