Docker介紹:從效能方面透視,第一篇

2016-04-24    分類:雲端計算/大資料、程式設計開發、首頁精華1人評論發表於2016-04-24

本文由碼農網 – 郝林偉原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃

Docker是什麼?

簡單來說,Docker平臺是關於使用容器來使得建立、部署、運營變得更簡單的一切相關內容。容器可以讓開發者將一個應用程式打包,裡面包含了必須的部分,如應用程式依賴的庫和其他元素,以包的形式釋出出去。通過將app和相關的元素新增到容器內,開發者確保這個apps能夠執行在任何Linux機器上,不管機器有怎樣的預設配置,或者這個機器與編寫測試程式碼的機器有多大區別。這點對開發者而言很有用,因為它使得整個生命週期內對app操作變得很容易。

Docker是一種類似虛擬機器的東西,但它不會建立一個完整的作業系統(OS),它讓應用程式具有這個優勢,應用程式執行在一個系統上就如同它執行在Linux核心上一樣。那樣的話,應用程式只用新增不在宿主機上的東西而不是一整個OS。這就意味著,apps更小,比那些依賴系統的apps效能也更好。它也有其他一些好處。

對開發者和系統管理員而言,Docker是一個分散式應用的開放平臺。它為基礎設施不可知的CaaS模型提供了一個整合的套件。有了Docker,IT運營團隊能夠對基礎設施資源和基本應用程式內容提供保護,管理,而開發者可以以一種自助的形式編譯和釋出他們的應用。

關鍵的優勢

開源

Docker的另一個關鍵因素是,它是完全開源的。這就意味著任何人都能給平臺提出意見,當Docker本身不包含他們需要的特性時,可以適配並擴充套件它以滿足他們自己的需求。所有這些使得對開發者和系統管理者而言,Docker是非常方便的選擇。

低開銷

因為開發者不需要提供一個真實的虛擬環境一直到硬體級別,通過只建立執行時必要的庫和OS部件,可以降低系統的開銷。

敏捷

思路上,Docker是依賴速度和簡單性來建立的。這也是它變得如此流行的部分原因。開發者現在能夠非常簡單地將軟體和依賴元素打包到一個容器中。他們能使用任何程式語言,任何版本、任何工具,因為它們是一起打包到一個容器中,因而,事實上標準化了所有元素,同時也並未丟棄任何東西。

可移植性

Docker以一種全新方式使得應用程式容器變得完全可移植。開發者現在能夠分發app從開發到測試到製作而又不破壞程式碼。機器環境的差異不會對打包進容器中的東西造成任何影響。製作中不需要改變app,這點對IT運營團隊而言很有幫助,因為現在他們能夠在資料中心之間移動apps而又避免供應商依賴。

控制

當apps在生命週期中移動時,Docker提供了對apps最大程度的控制,因為環境是標準化的。這也使得很容易回答在整個過程中有關安全性、管理型、和規模方面的問題。針對特定專案,IT團隊可以定製需要的控制和靈活性級別來保持服務級別,效能和合規性。

它是怎麼被創造的以及它是如何出現的?

過去apps以一種非常不同的方式開發。有許多私人資料中心執行買來的程式,資料中心由龐大的程式碼庫控制,每年都要升級一次。隨著雲端計算的開發和應用,一切都改變了。現在世界上的公司都依賴於軟體去與他們的客戶聯絡,軟體選項變得越來越定製化。

隨著軟體變得更加複雜,服務,依賴性,基礎設施,對獲取app的終端狀態提出了很多挑戰。這就是Docker的來源。

在2013年,Docker被研發出來作為一種編譯、分發、執行應用程式的方式,在所有使用容器的地方。軟體容器是一種軟體的標準單元,它不受程式碼和包含在程式碼內部的依賴關係的影響。這使得開發者和系統管理員能夠處理在不同基礎設施和不同環境下移動軟體而無需任何修改的需求。

在2013年3月13日PyCon Lightning Talk – The future of Linux Containers大會上,Docker釋出。Moby Dock,Docker吉祥物,幾個月後被創造出來。同年9月,Docker和RedHat宣佈聯盟,引入了Fedora/RHEL相容性。在2014年1月公司獲得了1500萬美元的B輪融資,同年8月Docker Engine1.2釋出。2014年9月他們獲得了4000萬美元的C輪融資,在2014年12月31日,Docker已經擁有了1億的容器下載量。在2015年4月,他們獲得了9500萬美元的D輪融資,擁有了3億的容器下載量。

它是怎麼工作的?

Docker是一種容器即服務(CaaS)。為了理解它是怎麼工作的,首先要了解一個Linux容器是什麼。

Linux容器

在一個通常的虛擬化環境中,虛擬機器在系統管理程式(例如Xen, Hyper-V)的幫助下執行於物理機器之上。容器執行於作業系統核心之上的使用者空間。每個容器都有自身佇列的使用者空間,在一個主機上可以執行多個不同容器。通過使用兩種Linux核心特性:名稱空間和控制組,一個主機中的容器能夠彼此獨立。

在Linux中有六個名稱空間,它們允許容器包擁有自己的網路介面,IP地址,等等。容器使用的資源由控制組來管理,它可以允許你限制容器能夠使用的CPU和儲存資源數量。

Docker

Docker是一種容器引擎,它使用了Linux核心特性,使容器執行於OS之上,在容器中自動化app部署。它提供了一個輕量級環境來執行app程式碼,目的是建立一個更有效的工作流,當你在整個軟體生命週期中移動app時。它執行於一個客戶端-伺服器架構。Docker Daemon負責與容器相關的所有動作,這個守護程式通過代理或REST APIs從Docker客戶端獲取命令。

容器從映象中編譯,這些映象可以配置包含apps,作為建立容器的一個模板。它們組織成一層,映象的每個變化會新增到它上面的一層。Docker映象儲存於Docker序號產生器中,開發者使用公用或私用的序號產生器去編譯並在團隊中共享映象。Docker-hosted的序號產生器服務被稱為DockerHub(Docker公共倉庫),允許你從中心位置節點上傳下載映象。

一旦你有了映象,你可以建立一個容器,它是映象的一個可寫層。映象通知Docker容器包含什麼內容,當容器載入後要執行什麼程式和配置資料。一旦容器開始執行,你就可以管理它,與app互動,當你結束的時候停止並移除容器。這就使得執行app變得很容易,無需修改程式碼。

為什麼開發者會在乎?

Docker在整個開發週期中對開發者很有幫助。它使得你可以在裝有app和服務的本地容器上進行開發,然後整合到一個持續整合和部署工作流中。本質上,它使得開發者的開發過程更加簡單。它特別有用處,基於以下原因:

更容易容量擴充套件

Docker使得保持工作負載高可移植性很容易。容器可以執行在開發者的本地主機,也能執行於物理或虛擬機器器或雲服務中。這就使得管理工作負載更簡單,你可以近乎實時地用它來按比例增加或拆除app和服務。

更高的密度和更多工作負載

相對基於系統管理程式的虛擬機器,Docker是一個輕量級和很划算的選擇,能適應高密度環境。對小型和中級部署也很有用,在這型別的部署中你想要充分利用你已經擁有的資源。

Docker背後主要的供應商和支持者

Docker專案依賴於社群支援頻道,像論壇,IRC和StackOverFlow。Docker從很多大組織收到了捐助,包括:

  • Project Atomic
  • Google
  • GitHub
  • FedoraCloud
  • AlphaGov
  • Tsuru
  • Globo.com

許多雲端計算服務商提供Docker支援,包括:

  • Microsoft
  • IBM
  • Rackspace
  • Google
  • Canonical
  • Red Hat
  • VMware
  • Cisco
  • Amazon

敬請期待下一集,到時我們會更深入探討Docker和它的能力。與此同時,你可以閱讀這個部落格去了解AppDynamics是怎樣提供對Docker容器的完全可視性。

譯文連結:http://www.codeceo.com/article/docker-performance-01.html
英文原文:An Introduction to Docker: The Performance Perspective – Part 1
翻譯作者:碼農網 – 郝林偉
轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]

相關文章