從零玩轉Docker(一):什麼是Docker?

簡介

Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從Apache2.0協議開源。Docker官網:https://www.docker.com/

Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發佈到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。

Docker 從 17.03 版本之後分爲 CE(Community Edition: 社區版) 和 EE(Enterprise Edition: 企業版),個人使用社區版就可以。

Docker的應用場景

1、Web 應用的自動化打包和發佈。

2、自動化測試和持續集成、發佈。

3、在服務型環境中部署和調整數據庫或其他的後臺應用。

4、從頭編譯或者擴展現有的 OpenShift 或 Cloud Foundry 平臺來搭建自己的 PaaS 環境。

 

Docker 的優點

(1)上手快

用戶需要幾分鐘,可以把自己的程序“Docker”。Docker依賴於“寫時複製”(copy-on-write)模型,使修改應用程序也非常迅速可以達到“隨心所致,代碼即改”的境界。

隨後,就可以創建容器來運行應用程序了。大多數Docker容器只需要不到1秒中即可啓動。由於了管理程序的開銷,Docker容器擁有很高的性能同時一臺宿主機也可以運行更多的容器,使用戶盡可能的充分利用系統資源

2)職責的邏輯分類

使用Docker,開發人員只需要關心容器中運行應用程序,而運維人員只需要關心如何管理容器Docker設計目的就是要加強開發人員寫代碼的開發環境應用程序部署的生產環境一致性。從而降低那種“開發時一切正常,肯定是運維的問題(測試環境都是正常的,上線後了問題就歸結肯定是運維的問題)”

3)快速高效的開發生命週期

Docker的目標之一就是縮短代碼從開發測試到部署、上線運行的週期你的應用程序具備移植性,易於構建易於協作。(通俗一點說,Docker就像一個盒子,裏面可以裝很多物件,如果需要這些物件的可以直接將該盒子拿走,而需要該盒子中一件件的取。)

4)鼓勵使用面向服務的架構

Docker還鼓勵面向服務的體系結構和微服務架構Docker推薦單個容器運行一個應用程序或進程,這樣就形成一個分佈式的應用程序模型,這種模型下,應用程序或者服務可以表示系列內部互聯的容器,從而使分佈式部署應用程序,擴展調試應用程序變得非常簡單同時提高了程序的內省性。(當然,可以在一個容器運行多個應用程序

Docker的架構

Docker 使用客戶端-服務器 (C/S) 架構模式,使用遠程API來管理和創建Docker容器。

Docker 容器通過 Docker 鏡像來創建。

容器與鏡像的關係類似於面向對象編程中的對象與類。

 

Docker 和虛擬機的區別

Docker是一種輕量級的虛擬化技術,比傳統的虛擬機性能更好。

下圖是虛擬機的體系結構:

QQ截圖20191009221153.png

  • server - 表示真實電腦。

  • Host OS - 真實電腦的操作系統,例如:Windows,Linux

  • Hypervisor - 虛擬機平臺,模擬硬件,如VMWare,VirtualBox

  • Guest OS - 虛擬機平臺上安裝的操作系統,例如CentOS Linux

  • App - 虛擬機操作系統上的應用,例如nginx

下圖是Docker的體系結構:

QQ截圖20191009221205.png

  • server - 表示真實電腦。

  • Host OS - 真實電腦的操作系統,例如:Windows,Linux

  • Docker Engine - 新一代虛擬化技術,不需要包含單獨的操作系統。

  • App - 所有的應用程序現在都作爲Docker容器運行。

這種體系結構的明顯優勢是,不需要爲虛擬機操作系統提供硬件模擬。所有應用程序都作爲Docker容器工作,性能更好。

博文參考:

https://www.runoob.com/docker/docker-tutorial.html

http://blog.java1234.com/index.html?typeId=37

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章