[Docker]Docker學習筆記01.Docker概述、與傳統虛擬化技術的不同、優點、應用場景

在這裏插入圖片描述

提取知識點

Docker

  • 由Go語言開發
  • 是一個裝東西的容器(可以裝操作系統、軟件等)
  • 可簡單認爲是個虛擬機軟件,但比虛擬機好太多,所以我們用它
  • 佔用系統資源少
  • 可以實現秒級啓動

目錄:

一、Docker概述(Docker真正實現一次編譯,到處運行)
二、Docker與傳統虛擬化技術的不同之處
三、爲什麼要使用Docker(Docker的優點)
四、Docker應用場景

內容

一、Docker概述(Docker真正實現一次編譯,到處運行)

Docker 是一個開源應用容器引擎,基於 Go 語言 並遵從Apache2.0協議開源。

最初是 dotCloud 公司內部在2013年的一個業餘項目,Docker 自開源後受到廣泛的關注和討論,以至於 dotCloud公司後來都改名爲Docker Inc。

Docker 項目的目標是 實現輕量級的操作系統虛擬化解決方案
用戶操作 Docker 的容器就像操作一個 快速輕量級的虛擬機 一樣簡單

由於隔離的進程獨立於宿主和其它的隔離的進程,因此也稱其爲 容器(Container)

最初實現是基於 LXC(Linux 容器技術),從 0.7 版本以後開始去除 LXC,轉而使用自行開發的 libcontainer,從 1.11 開始,則進一步演進爲使用 runC 和 containerd。

Docker 在容器的基礎上,進行了進一步的封裝,從文件系統、網絡互聯到進程隔離等等,極大的簡化了容器的創建和維護。使得 Docker 技術比虛擬機技術更爲輕便、快捷

Docker 從 17.03 版本之後分爲

  • CE(Community Edition: 社區版)
  • EE(Enterprise Edition: 企業版)
    我們使用社區版(1.12版本是里程碑是版本,我們要用1.12之後的版本)

二、Docker與傳統虛擬化技術的不同之處

傳統虛擬機技術是虛擬出一套硬件後,在其上運行一個 完整操作系統,再在該系統上再運行所需應用進程。
而容器內的應用進程直接運行於宿主的內核,容器內沒有自己的內核,而且也沒有進行硬件虛擬
在這裏插入圖片描述
如上圖 VMware虛擬機依賴CPU硬件的虛擬化技術(可參考[VMware]解決"已將該虛擬機配置爲使用 64 位客戶機操作系統。但是,無法執行 64 位操作"的問題),先在虛擬機上虛擬一塊硬件,然後再裝操作系統,且在虛擬機上必須安裝好系統後才能在系統中安裝軟件。
Docker容器技術則無需依賴硬件的虛擬化技術,可在Docker中安裝操作系統或直接安裝軟件(使用安裝Docker的系統)。

可見容器是在操作系統層面上實現虛擬化,可直接安裝軟件,此時會自動依賴一個系統,而傳統方式則是在硬件層面實現。

注:虛擬機中不可以再運行虛擬機,而Docker中可以運行Docker或其他軟件

三、爲什麼要使用Docker(Docker的優點)

作爲一種 新興 的虛擬化方式,Docker 跟傳統的虛擬化方式相比具有衆多的優勢。

更高效的利用系統資源:一臺主機上可以同時運行數千個 Docker容器

由於容器不需要進行硬件虛擬以及運行完整操作系統等額外開銷,Docker 對系統資源的利用率更高。無論是應用執行速度、內存損耗或者文件存儲速度,都要比傳統虛擬機技術更高效。因此,相比虛擬機技術,一個相同配置的主機,往往可以運行更多數量的應用。

更快速的啓動時間:秒級啓動

傳統的虛擬機技術啓動應用服務往往需要數分鐘,而 Docker 容器應用,由於直接運行於宿主內核,無需啓動完整的操作系統,因此可以做到秒級、甚至毫秒級的啓動時間。大大的節約了開發、測試、部署的時間。

持續交付和部署

對開發和運維(DevOps)人員來說,最希望的就是一次創建或配置,可以在任意地方正常運行。

使用 Docker 可以通過定製應用鏡像來實現持續集成、持續交付、部署。開發人員可以通過 Dockerfile 來進行鏡像構建,並結合 持續集成(Continuous Integration) 系統進行集成測試,而運維人員則可以直接在生產環境中快速部署該鏡像,甚至結合 持續部署(Continuous Delivery/Deployment) 系統進行自動部署。

而且使用 Dockerfile 使鏡像構建透明化,不僅僅開發團隊可以理解應用運行環境,也方便運維團隊理解應用運行所需條件,幫助更好的生產環境中部署該鏡像。

更輕鬆的遷移:一致的運行環境

Docker 的鏡像提供了除內核外完整的運行時環境,確保了應用運行環境(開發環境、測試環境、生產環境)一致性,由於 Docker 確保了執行環境的一致性,使得應用的遷移更加容易。Docker 可以在很多平臺上運行,無論是物理機、虛擬機、公有云、私有云,甚至是筆記本,其運行結果是一致的。因此用戶可以很輕易的將在一個平臺上運行的應用,遷移到另一個平臺上,而不用擔心運行環境的變化導致應用無法正常運行的情況。

更輕鬆的維護和擴展

Docker 使用的分層存儲以及鏡像的技術,使得應用重複部分的複用更爲容易,也使得應用的維護更新更加簡單,基於基礎鏡像進一步擴展鏡像也變得非常簡單。此外,Docker 團隊同各個開源項目團隊一起維護了一大批高質量的 官方鏡像,既可以直接在生產環境使用,又可以作爲基礎進一步定製,大大的降低了應用服務的鏡像製作成本。
在這裏插入圖片描述

四、Docker應用場景

  • Web 應用的自動化打包和發佈。
  • 自動化測試和持續集成、發佈。
  • 在服務型環境中部署和調整數據庫或其他的後臺應用。
  • 從頭編譯或者擴展現有的OpenShift或Cloud Foundry平臺來搭建自己的PaaS環境。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章