提取知識點
Docker
- 由Go語言開發
- 是一個裝東西的容器(可以裝操作系統、軟件等)
- 可簡單認爲是個虛擬機軟件,但比虛擬機好太多,所以我們用它
- 佔用系統資源少
- 可以實現秒級啓動
目錄:
一、Docker概述(Docker真正實現一次編譯,到處運行)
二、Docker與傳統虛擬化技術的不同之處
三、爲什麼要使用Docker(Docker的優點)
四、Docker應用場景
內容
一、Docker概述(Docker真正實現一次編譯,到處運行)
Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從Apache2.0協議開源。
最初是 dotCloud 公司內部在2013年的一個業餘項目,Docker 自開源後受到廣泛的關注和討論,以至於 dotCloud公司後來都改名爲Docker Inc。
- Github地址:https://github.com/moby/moby
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環境。