docker – 你應該知道的10件事

OkidoGreen發表於2016-07-18

docker-logo

容器並不是一個全新的技術,但這並不妨礙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年技術支援,而著可能是很多企業所需要的。

注:現在Docker的版本已經是1.12。

9. Docker並不是沒有競爭對手

雖然Docker很流行,它並不缺少競爭對手。比如CoreOs最近也釋出了一個名為Rocket的產品,Docker最好的Linux伴侶Ubuntu也在發展它自己的LXD容器技術。這些競爭對手多少都在撕扯Docker封閉的生態系統。在Docker的世界裡,所有的東西都要圍繞Docker registry來執行,你要麼適用Docker所提供的公共服務,要不在自己的資料中心中部署一套,這並不是免費的。

10. Docker有風險,入市需謹慎

和任何一種新興的技術一樣,你需要循序漸進。從技術的角度來說,你需要了解很多該做的和不該做的。但最重要的一點,這不僅僅是幾行程式碼那麼簡單,你進入的是一個生態,而這個社群可能並不適合你。你應該先多參加一些社群活動,如:Meetup,郵件列表,訂閱些微信公眾號啥的;慢慢對它進行了解,然後再決定是否應該投入更多的時間。

無論Docker怎樣,容器技術都會繼續盛行下去,因為容器讓現代軟體技術和計算機技術變的更加簡單易用。而在容器這個領域裡,Docker是毋庸置疑的領導者,你沒有辦法迴避這個事實。但是,到底以怎樣的方式接受,接受多少,多快,你一定要根據自己企業的現狀來考慮。

 


相關閱讀:

docker4dotnet #1 前世今生 & 世界你好
http://devopshub.cn/2016/07/08/docker4dotnet-1-overview-and-helloworld/

docker4dotnet #2 容器化主機
http://devopshub.cn/2016/07/13/docker4dotnet-2-docker-machine-create-dockerized-hosts/

DockerCon 2016 – 微軟帶來了什麼?
http://devopshub.cn/2016/06/22/dockercon-2016-with-microsoft/

Real-World Docker: 10 Things We’ve Learned
http://www.slideshare.net/rightscale/webinar-real-world-docker-2014-1209-v3-1

(本文在SlideShare上可能無法正常訪問,可以通過在devopshub訂閱號中輸入d4dtools獲取)

Why Docker… and why now?
http://www.techrepublic.com/article/why-docker-and-why-now/

Docker and Microsoft partner to bring container applications across platforms
http://news.microsoft.com/2014/10/15/dockerpr/#sm.000uatmy5115te5avb62jyeq9a5fg


請關注微信公眾號 【devopshub】,獲取更多關於DevOps研發運維一體化的資訊

qrcode_for_gh_b7c158df1fd1_430

相關文章