在2016年還沒有進入四月份的時候,國內幾家對標Docker的創業公司先后發布會了融資信息,隨之而來則是又一波的Docker熱,為什么要說“又”?因為上一波的Docker熱還僅僅是幾個月前。
其實,容器并不是一個新名詞,相比于Docker來說,2005就發布了第一個版本的OpenVZ已經成功地應用在生產環境中,并且由于OpenVZ采用的是自行修改的Linux內核,其安全性甚至還要高于“隔離能力”較弱的Docker,不過和Docker不同,OpenVZ更加適合虛擬私有服務器,解決的是云基礎設施提供者管理虛擬機的問題,主要應用在多租戶的公有云環境。
不過,由于Docker在某些方面的優點較為顯著,因此大熱的Docker目前已經成為容器領域的代名詞。
1:正面
比如,從技術角度看,傳統容器只解決了容器執行(run)問題,而Docker定義了一套容器構建(build)、分發(ship)和執行(run)的標準化體系。上個月的英方渠道公開課上,云舒網絡曾系統介紹了如何應用Docker等容器技術如何構建企業應用商店、輕松管理應用的一鍵部署和升級回滾等。
從生態的角度看,Docker過去一年之所以開始普及,除了Windows對于Docker的不斷開放,使得Docker被進一步發揚光大外,云計算產業的迅速發展同樣功不可沒——Docker被作為虛擬化的補充甚至替代技術(你甚至可以認為Docker就是另外的一種虛擬化技術)而被人們所關注,傳統虛擬化技術是對硬件資源的虛擬,容器技術則是對進程的虛擬,從而可提供更輕量級的虛擬化,實現進程和資源的隔離。
從架構角度來看,Docker比虛擬化少了兩層,取消了hypervisor層和GuestOS層,使用Docker Engine(一個便攜式、輕量級的運行環境和包管理器)進行調度和隔離,所有應用共用主機操作系統,因此在體量上,Docker較虛擬機更輕量級,在性能上優于虛擬化,接近裸機性能。
說完了“正面”,說說“反面”。
2:反面
首當其沖的就是安全性問題,Docker不能分辨具體執行指令的用戶,只要一個用戶擁有執行Docker的權限,那么他就可以對Docker的容器進行所有操作,不管該容器是否是由該用戶創建。比如A和B都擁有執行Docker的權限,由于Docker的server端并不會具體判斷Docker cline是由哪個用戶發起的,A可以刪除B創建的容器,存在一定的安全風險。
其次,國內對標Docker的企業都是基于開源的GO語言的開發,技術上的差異化并不明顯,大家都是賣“集裝箱”的,并沒有握住最有價值的那部分。
再次,Docker對業務的高可用支持是通過快速重新部署實現的,關于數據本地的高可用、備份和遠程容災依然需要借助虛擬化的技術得以實現。以Docker容災高可用的實踐者英方股份為例,目前,英方通過對教育科研機構的OpenVZ系統中的虛擬機實時復制功能、恢復功能、數據完整性、數據一致性及異常處理等功能的支持,已經彌補了OpenVZ等容器技術在容災高可用方面的不足。隨著業務等進一步發展,更多容器技術環境下的災備業務將得以實現。
[注]:文中Docker一詞所指為“容器技術”,而非具體某一家企業。