Docker是一種輕量級的虛擬化技術,同時是一個開源的應用容器運行環境搭建平臺,可以讓開發者以便捷方式打包應用到一個可移植的容器中,然后安裝至任何運行Linux或Windows等系統的服務器上。相較于傳統虛擬機,Docker容器提供輕量化的虛擬化方式、安裝便捷、啟停速度快。
收藏丨運維良藥,K8S日常故障處理集錦_k8s容器突然沒了-CSDN博客
RHCE 9.0培訓課程之容器技術的運行-CSDN博客
為什么需要Docker容器
虛擬機(Virtual Machine,簡稱VM)的發展,減輕了企業對硬件資源的依賴,它將一臺物理設備虛擬為多個邏輯設備,每個邏輯設備可運行不同的操作系統,并且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高設備的工作效率。然而,傳統VM需要安裝操作系統才能執行應用程序,占用系統資源過多。多數情況下,用戶只需要運行簡單的應用程序,采用VM技術操作繁瑣且造成資源浪費。倘若需要遷移應用服務程序,則需遷移整個VM,因此企業迫切需要輕量級的虛擬化技術。
容器,就是一種輕量級的虛擬化技術,目的和虛擬機一樣,都是為了創造“隔離環境”。但是它不像VM采用操作系統級的資源隔離,容器采用的是進程級的系統隔離。Docker作為創建容器的主流工具,近年來迅速發展,它的優勢在于可以讓開發者將企業需要的各種應用及應用依賴文件封裝在Docker鏡像文件中,然后在任何物理設備(Linux設備或Window設備等)上安裝運行實現虛擬化,讓應用程序徹底脫離底層設備,可以在物理機之間靈活遷移部署,使運維工程師擺脫了繁瑣的環境部署,極大的提高了工作效率,同時減少了部署過程中的潛在風險。
Docker容器具有以下三大特點:
-
輕量化:一臺主機上運行的多個Docker容器可以共享主機操作系統內核;啟動迅速,只需占用很少的計算和內存資源。
-
標準開放:Docker容器基于開放式標準,能夠在所有主流Linux版本、Microsoft Windows以及包括VM、裸機服務器和云在內的任何基礎設施上運行。
-
安全可靠:Docker賦予應用的隔離性不僅限于彼此隔離,還獨立于底層的基礎設施。Docker默認提供最強的隔離,因此應用出現問題,也只是單個容器的問題,而不會波及到整臺主機。
Docker容器 VS VN
Docker容器和傳統VM技術,在技術實現上有所不同。下圖顯示的是VM與Docker容器的邏輯組成:
-
VM:使用Hypervisor提供虛擬機的運行平臺,管理每個VM中操作系統的運行。每個VM都要有自己的操作系統、應用程序和必要的依賴文件等。
-
Docker容器:使用Docker引擎進行調度和隔離,提高了資源利用率,在相同硬件能力下可以運行更多的容器實例;每個容器擁有自己的隔離化用戶空間。
虛擬機與Docker容器對比
相較于VM,Docker容器作為一種輕量級的虛擬化方式,在應用方面具有以下顯著優勢:
-
Docker容器可以在秒級時間內快速啟動和停止,相較傳統虛擬機顯著提升。
-
Docker容器對系統資源要求低,數千個Docker容器可同時運行在同一個主機上。
-
Docker容器通過類似Git的操作來方便用戶獲取和更新應用鏡像。
-
Docker容器通過Dockerfile配置文件實現自動化創建和靈活部署,提高工作效率。
-
Docker容器除了運行其中的應用之外,基本不消耗額外的系統資源,保證應用性能的同時,盡量減小系統開銷。
下圖可直觀了解Docker容器與傳統VM方式的區別:
Docker容器與傳統VM的區對比
Docker容器是如何工作的
Docker的三大組成要素:
-
鏡像:Docker鏡像是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準備的配置參數。鏡像不包含任何動態數據,其內容在構建之后也不會被改變。鏡像可以用來創建Docker容器,用戶可以使用設備上已有的鏡像來安裝多個相同的Docker容器。
-
容器:鏡像創建的運行實例,Docker利用容器來運行應用。每個容器都是相互隔離的、保證安全的平臺。我們可以把容器看做是一個輕量級的Linux運行環境。
-
鏡像倉庫:集中存放鏡像文件的地方。用戶創建完鏡像后,可以將其上傳到公共倉庫或者私有倉庫,需要在另一臺主機上使用該鏡像時,只需要從倉庫上下載即可。
Docker容器的運行邏輯如下圖所示,Docker使用客戶端/服務器 (C/S) 架構模式,Docker守護進程(Docker daemon)作為Server端接收Docker客戶端的請求,并負責創建、運行和分發Docker容器。Docker守護進程一般在Docker主機后臺運行,用戶使用Docker客戶端直接跟Docker守護進程進行信息交互。
Docker運行流程
其中:
-
Docker客戶端:用于和Docker守護進程(Docker Daemon)建立通信的客戶端。Docker客戶端只需要向Docker服務器或者守護進程發出請求(Docker構建、Docker拉取和Docker啟動等指令),服務器或者守護進程將完成所有工作并返回結果。
-
如橙色流程所示,執行Docker構建指令會根據Docker文件構建一個鏡像存放于本地Docker主機。
-
如藍色流程所示,執行Docker拉取指令會從云端鏡像倉庫拉取鏡像至本地Docker主機或將本地鏡像推送至遠端鏡像倉庫。
-
如黑色流程所示,執行Docker啟動指令會將鏡像安裝至容器并啟動容器。
-
Docker主機:一個物理或者虛擬的機器用于執行 Docker守護進程和容器。
-
Docker守護進程:接收并處理Docker客戶端發送的請求,監測Docker API的請求和管理Docker對象,比如鏡像、容器、網絡和數據卷。
EC-IoT解決方案基于“邊緣智能+云化管理”平臺,物聯網關開放邊緣計算能力,快速適配不同行業邊緣智能數據處理需求,實現關鍵業務本地毫秒級實時響應,完成數據本地聚合優化,高價值數據主動回傳云端。
邊緣計算網關基于“硬件平臺化,業務APP化”的設計理念,終端功能由APP軟件定義,用戶基于基礎服務接口開發自定義APP,并實現在邊緣計算網關的靈活部署,快速適應業務需求復雜多變的物聯場景。邊緣計算網關支持部署Docker容器,用戶可在部署的容器上安裝自己的業務APP,同時網關設備提供各種eSDK接口供容器和APP調用其資源。
EC-IoT解決方案
網關開放性
?