Docker真的支持原生態Mac和Windows了嗎?
原創今天看新聞,突然有爆料說docker已經支持Mac和Windows了,這不禁讓我感慨發展之迅速。作為跟MFC,,Visual Studio, WinDBG,.Net打交道多年的我,甚是興奮。不過,當我仔細閱讀原文后,發現跟我們想的還相差甚遠。
“Faster and more reliable: no more VirtualBox! The Docker engine is running in an Alpine Linux distribution on top of an xhyve Virtual Machine on Mac OS X or on a Hyper-V VM on Windows, and that VM is managed by the Docker application. You don’t need docker-machine to run Docker for Mac and Windows.”
僅憑這一句,我就頓感失望。Docker和VM的***區別就是,一個是操作系級虛擬化,一個是硬件級虛擬化。因此, Docker本身就是可以運行在VM之上的。你不能說在windows上裝個虛擬機,然后再運行一個Docker,就說docker支持windows吧。為了讓docker能在VM上運行,docker專門開發了Docker Toolbox和docker-machine,其核心都是通過虛擬機來運行docker,只不過是幫用戶簡化了中間的部署和配置流程。針對本次的Beta發布,更多的是優化的工作。筆者也提交了試用申請,然后進入了長長的waiting-list,不過我猜測,這次的版本改進主要體現在以下幾個方面:
- 通過使用輕量級的linux發行版本,使VM更小,部署和安裝更快。Alpine linux是一個非常輕量級的發型版,而且docker也有計劃讓alpine作為默認的基礎鏡像。
- 原生工具集支持。以前我們在非linux下運行時,都需要借助于類似MINGW的工具,模擬一下Shell。而這次Beta的退出,在這方面肯定是加強了,支持了原生態的命令。
- 更好的網絡支持??赡軙ocker的網絡系統集成到Mac和Windows的原生網絡系統中,方便用戶配置。
- 更好的對系統沙盒的適配。OS X和Windows本身都是支持沙盒的,可能在這方面會有所加強。
這一系列的改進,不可謂不大??吹贸鰀ocker得到了Microsoft和Mac的很大幫助,同時也歸功于docker在Unikernal 領域的收購。那么為什么原生態的windows和mac那么難支持呢?這必須從docker的基本原理說起:
- CGroup技術,這是用來控制CPU、內存、網絡等資源限制的,這需要內核的支持,而目前只有linux的支持比較好。
- lNamespace技術,這是用來做用戶資源隔離的,注意這里是隔離,是讓一個進程成為一個沙盒,擁有完全獨立的PID,網絡棧,主機名等,而這一技術目前也是只有linux支持比較好。
不過話說回來,Microsoft也不是吃素的,其實Windows Server 2016已經支持了原生態的docker,不過它基本上是完全重寫了,連基礎鏡像都是windows server,這一點就很難融入docker的生態圈,畢竟Registry里面的基本都是運行在linux下的鏡像。
作者介紹:晏東,精靈云(www.ghostcloud.cn)聯合創始人,20年編程經驗,全棧工程師,曾任索貝數碼及賽門鐵克架構師架構師,一直從事SAN、NAS及對象存儲等分布式系統研發工作。2013年開始研究LXC和Docker相關技術,目前主要從事容器云平臺鏡像及倉庫方面研發工作。