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