1. 程式人生 > >一、【Docker筆記】進入Docker世界

一、【Docker筆記】進入Docker世界

​ 我們平時判斷一個電腦的效能主要看什麼?磁碟讀寫?CPU的主頻高低?還是記憶體的大小?可是作為個人使用者來說,這些引數高一些足夠我們去使用了,可是對於一個大型系統甚至是超大型系統,當前的硬體是遠遠達不到的。而作為當前的雲端計算時代,虛擬化技術就發揮了自己的獨特的作用。 ​ 隨著資訊科技的快速發展,虛擬化技術也在不斷的豐富和創新。從20世紀60年代的IBM推出大型主機虛擬機器到現在的X86平臺上的虛擬化,虛擬化既可以通過硬體模擬來實現,同時也可通過作業系統來實現,而當前的容器虛擬化就是充分地利用了作業系統的機制和特性,實現輕量級的虛擬化,在這些虛擬化技術中,Docker又是其中的佼佼者。 ## 一、什麼是Docker ### 1、Docker一個開源專案 ​ Docker是一個基於Go語言實現的雲開源專案,它誕生於2013年,最初發起者未dotCloud公司。目前Docker已經成為了一個生態體系,並已加入Linux基金會,遵循Apache2.0協議。目前主流的Linux作業系統都支援Docker,而Docker的主要目標是通過對應用元件的封裝、分發、部署、執行等生命週期的管理,達到應用元件(Web應用 / 資料庫服務 / 作業系統或編譯器等)級別的“一次封裝,到處執行”。 ### 2、Linux容器技術 ​ Docker引擎的基礎就是Linux容器(Linux Containers,LXC)技術。對於容器技術,IBM DeveloperWorks給出了描述:`容器有效地將由單個作業系統管理的資源劃分到孤立的組中,以便更好地在孤立的組之間平衡有衝突的資源使用需求。與虛擬化相比,這即不需要指令級模擬,也不需要即時編譯。容器可以在核心CPU本地執行指令,而不需要任何專門的解釋機制。同時也避免了準虛擬化和系統呼叫替換中的複雜性。` ​ 當然Linux容器也並不是一個全新的概念,只是後來LXC專案借鑑了前人成熟的容器設計理念,並基於一些新的核心特性實現了擴充套件性的虛擬化容器技術。關鍵的是,LXC由此被整合到了Linux核心中,而成為Linux系統輕量級容器技術的事實標準。 ### 3、從Linux容器到Docker ​ 在Linux容器技術的基礎上,Docker優化了容器的使用體驗。同時,Docker提供了各種容器管理工具讓使用者無需關注底層的操作,可以簡單地管理和使用。 ## 二、為什麼要使用Docker ### 1、Docker容器虛擬化的好處 ​ 高效地構建應用,開發者能方便地建立執行在雲平臺上的應用,應用能夠脫離底層機器,同時在任何時間和任何地點都是可獲取的。而Docker提供容器打包應用,當我們在遷移系統時,只要啟動需要的容器就可以了。這將節約時間,並降低部署過程出現問題的風險。 ### 2、Docker在開發和運維中的優勢 ​ 對於開發和運維人員來說,最理想的就是一次性地建立和配置,可以在任意環境、任意時間讓應用正常地執行。而Docker即可實現:1、更快速的交付和部署。2、更高效的資源利用。3、更輕鬆的遷移和擴充套件。4、更簡單的更新管理。 ### 3、Docker與虛擬機器對比 ​ 作為輕量級的虛擬化方式,Docker在執行應用上跟傳統的虛擬機器方式相比具有顯著的優勢: ​ 1、Docker容器更快,啟動和停止都是秒級。 ​ 2、Docker容器對系統資源需求更少。 ​ 3、Docker指令簡明,學習成本底。 ​ 4、Docker通過Dockerfile配置檔案支援靈活的自動化建立和部署機制,提高工作效率。 | 特性 | 容器 | 虛擬機器 | | :--------: | :----------------: | :--------: | | 啟動速度 | 秒級 | 分鐘級 | | 硬碟使用 | 一般未MB | 一般為GB | | 效能 | 接近原生 | 弱於 | | 系統支援量 | 單機支援上千個容器 | 一般幾十個 | | 隔離性 | 安全隔離 | 完全隔離 | ## 三、虛擬化與Docker比較 ​ 虛擬化技術是一個通用的概念,在不同的領域有不同的理解。而在計算領域,一般指的是計算虛擬化或伺服器虛擬化。虛擬化的核心是對資源進行抽象,目標為在同一機器上執行多個系統或應用,提高系統資源的利用率,同時降低成本、方便管理和容錯容災等好處。 ​ 從型別區分,虛擬化技術可分為基於硬體的虛擬化和基於軟體的虛擬化。而我們一般討論的都是基於軟體的虛擬化,而基於軟體的虛擬化從物件層次上又分為應用虛擬化和平臺虛擬化。其中主要討論的又是平臺虛擬化,平臺虛擬化又可分為完全虛擬化、硬體輔助虛擬化、部分虛擬化、超虛擬化、作業系統級虛擬化。而Docker就屬於作業系統級虛擬化。 ​ 表1:傳統的虛擬化方式
應用程式 應用程式
執行時環境 執行時環境
虛擬機器作業系統 虛擬機器作業系統
虛擬機器管理程式
宿主機作業系統
硬體層
​ 表2:Docker的虛擬化方式
應用程式 應用程式
執行時環境 執行時環境
Docker容器支援
宿主機作業系統
硬體層