Docker,改變程序世界的箱子
本文來自微信公眾號“ 給產品經理講技術 ”(pm_teacher),歡迎大家關注。
最近聽了一期羅輯思維,聊的是《改變世界的箱子》,這個箱子就是集裝箱,它將物流運輸過程標準化為以一個箱子為單元,簡化了運輸流程,同時也降低了物流成本,因而造就了一個高度自動化、標準化和低成本的物流體系,極大的促進了經濟全球化。這讓我想到,最近在程序界也出現了同樣的一個箱子,那就是今天要聊的 Docker 容器。
軟件開發中需要面對的一個挑戰就是環境管理問題,因為軟件并不是獨立運行的,它依賴了很多其它的軟件,包括操作系統、運行時、依賴庫等等,而且對每個依賴軟件還有版本要求,有一個依賴關系稍微不對,那就可能造成軟件的運行異常。產品同學應該有過這種經歷,從開發哥那里要一個最新版的軟件來體驗功能,結果裝在自己的電腦上打開就掛掉,這個時候找開發哥來解決,開發哥一看就會說 “哦,你這環境不對,換個 Win8 吧,這軟件只能在 Win8 以上運行”,或者說 “這個軟件需要.Net 框架,你裝個.Net 就好了”。
其實解決依賴環境的辦法很簡單,那就是所有機器都用同一套環境。但是對于一些 web 服務,它所依賴的軟件及關聯軟件可能有上百個,讓你去配一臺機器已經要吐血了,如果讓你把這個服務發布到 100 臺不同的機器上,那么你就應該會陣亡了。同時,很有可能因為不同的機器已有的環境不同,你安裝這些依賴的同時還要保證不能影響其它已有應用。
說了這么多,其實就是三個大問題,如何解決環境依賴?如何解決大規模部署?如何解決應用與應用的互相影響?Docker 就是這些問題的一種解決方案,它是一個容器,也可以說是一個軟件集裝箱,這個箱子里面可以塞入特定版本的操作系統、數據庫、服務器程序和 web 應用,這樣一套完整的 web 服務就集成在這個箱子里面了,當要發布服務的時候,直接將這個集裝箱放在我們的服務器船上。如果你想發布到 100 臺機器上,沒問題,只需要 ctrl-c ctrl-v,將這些集裝箱復制到 100 臺機器上,它不會在乎船的配置高低,只要能放得下就行。如果你想發布 10 個不同的服務,還是沒問題,你只需將這 10 個不同的集裝箱依次排列在服務器船上,它們之間完全不會互相影響,因為各自被鎖在不同的箱子里。
有的同學可能會說了,這不就是虛擬機嘛...是的,Docker 算是一種輕量級的虛擬機,它比起傳統的虛擬機更快,更節省資源。打個比方,虛擬機就是輪船上的豪華包間,即使它用不了這么多資源,它也霸占著不讓別人使用,而 Docker 容器就是一個簡單的集裝箱,它只占據它需要的資源。
Docker 技術目前才剛剛開始流行,它能不能改變程序世界,讓我們拭目以待吧。
原創文章,作者:給產品經理講技術,如若轉載,請注明出處:http://36kr.com/p/5041923.html
“看完這篇還不夠?如果你也在創業,并且希望自己的項目被報道,請戳這里告訴我們!”
來自: http://36kr.com/p/5041923.html