容器并不是一個全新的技術,但這并不妨礙Docker如風暴一樣席卷整個世界。
如果你在IT圈里,你一定聽說過Docker。就算與其他熱門技術,如:Puppet/Chef,Hadoop或者MongoDB放在一起,Docker仍然讓你耳目一新。
不過就算Docker現在怎樣的如日中天,這并不意味著它一定適合你。就如同我在這篇 Tech Pro Rearch 的分析文章中讀到的一樣,“對于是否要采用Docker作為企業的未來技術方向,你需要的是謹慎!”
在你決定嘗試Docker之前,先了解以下這10點:
1. Docker是一種軟件打包和發布技術
現代軟件系統一般都由各種可運行的二進制文件,庫文件,配置文件和其他依賴組成。在一臺電腦上完成裝配已經是非常困難和復雜的事情,要“發布”這些軟件的時候,事情會變的更加復雜。一旦你開始發布過程,你就需要找到一種能夠讓這些組件正確打包的方式,還要考慮如何把打包好的軟件放到它們應該去的地方。Docker就是這樣一種幫助你進行軟件打包的方式,無論你的軟件有多少依賴,發布到哪里,其他開發人員的機器或者是生產環境;Docker都給你提供一種簡單易用而且標準化的方式。
2. Docker并不是一種全新的技術
Docker的出現不過幾年的時間,但是容器技術已經存在幾十年了。容器技術在主機時代已經被證明是非常有用的技術,這讓Docker的成功看上去更像是時勢造英雄的結果,包括Linux的流行,虛擬化的大規模應用和云計算的興起都給Docker技術的火熱創造了必要條件。
3. 基本上大家都支持Docker
無論你選擇哪家技術供應商,基本上他們100%的支持Docker。從亞馬遜AWS到RedHat到Google,每一家能很好的支持Docker。
4. Docker 不僅僅可以跑在Linux上面
雖然Docker起源于Linux平臺,但是微軟正在大力擁抱Docker技術。Docker依賴于很多在Windows平臺上并不存在的技術,比如Linux容器技術(LXC),cgroup和命名空間(namespaces)技術。所以微軟正在開足馬力在Windows Server上提供對應的能力以便與Docker進行集成。實際上,微軟在Windows中也使用自己的容器化技術很多年了,現在所要做的就是讓這些技術能夠更好的兼容Docker,因為Docker已經成為事實上的標準。
5. Docker可以讓你像管理虛擬機一樣管理CPU,內存,網絡和磁盤資源
Docker是圍繞Linux的cgroup來實現的,cgroup的作用就是控制容器可以使用的各種計算機資源,包括cpu,內存,網絡和磁盤。在這一點上Docker提供了與虛擬機同樣的能力,讓你可以把計算機的一部分資源分配給一部分用戶或者進程,這樣他們就不會占用所有的計算資源;同時,Docker又不會像VMware所提供的虛擬化一樣帶來那么巨大的資源浪費(虛擬機必須運行整個操作系統,而Docker只是對應用進行虛擬化)。
6. 啟動Docker容器比啟動虛擬機快的多的多(毫秒級vs分鐘級)
在一臺服務器上運行多個作業的傳統方式是啟動多個虛擬機,然后在不同的虛擬機上運行不同的作業。因為虛擬機必須啟動整個操作系統,它就會很慢,一般都需要數分鐘的時間。同時這些虛擬機還非常消耗資源,因為操作系統本身就要吃掉很多資源。容器可以解決同樣的問題,但是啟動容器和啟動一個進程是同一級別的,所以Docker讓你可以節省掉操作系統所帶來的資源浪費,以進程級別的消耗來提供與虛擬機類似的隔離能力。
7. Docker還不會完全替代虛擬機,至少短期內不會
相對于虛擬機,Docker并不是一種非黑即白的替代方案,這主要是因為Docker依賴于底層標準化的操作系統,而虛擬機是當前解決這個問題最好的方式。但是,這也意味著Docker是依賴于某種操作系統的,所以你不可能在一臺容器化主機上同時運行Windows和Linux應用,你需要至少2臺分別運行Windows和Linux的容器化主機才行。同時,就Docker當前的技術發展情況來看,容器的隔離能力還做得不到和虛擬機同樣的級別;因此對于有些多租戶的場景來說,Docker可能并不那么適用。
8. Docker的發展速度實在是太快了
在你登上Docker這趟列車之前,你要知道你上的是新干線而不是蒸汽機車,每小時400公里的速度可不是鬧著玩的。看看這個僅僅存在了1年半的技術,它的API已經發布了15個版本,你就知道它的變化有多快了。就算Docker正在快速的成熟,并且已經逐漸具備了企業級軟件的能力,但是它并不提供10年技術支持,而著可能是很多企業所需要的。
注:作者的原文寫于2015年,現在Docker的版本已經是1.12。
9. Docker并不是沒有競爭對手
雖然Docker很流行,它并不缺少競爭對手。比如CoreOs最近也發布了一個名為Rocket的產品,Docker最好的Linux伴侶Ubuntu也在發展它自己的LXD容器技術。這些競爭對手多少都在撕扯Docker封閉的生態系統。在Docker的世界里,所有的東西都要圍繞Docker registry來運行,你要么適用Docker所提供的公共服務,要不在自己的數據中
心中部署一套,這并不是免費的。
10. Docker有風險,入市需謹慎
和任何一種新興的技術一樣,你需要循序漸進。從技術的角度來說,你需要了解很多該做的和不該做的,但最重要的一點,這不僅僅是幾行代碼那么簡單,你進入的是一個生態,而這個社區可能并不適合你。你應該先多參加一些社區活動,如:Meetup、郵件列表、訂閱些微信公眾號,慢慢對它進行了解,然后再決定是否應該投入更多的時間。
無論Docker怎樣,容器技術都會繼續盛行下去,因為容器讓現代軟件技術和計算機技術變的更加簡單易用。而在容器這個領域里,Docker是毋庸置疑的領導者,你沒有辦法回避這個事實。但是,到底以怎樣的方式接受,接受多少,多快,你一定要根據自己企業的現狀來考慮。