平時(shí)不太關(guān)注微軟的技術(shù)叛拷,不過這次微軟 build 2016有個(gè)新聞倒是值得關(guān)心一下岂却。
對(duì)這條新聞裙椭,每個(gè)人看到的角度略有不同(可以參見知乎上的討論)署浩,Shell 愛好者期待可以在 Windows 下用強(qiáng)大的 Linux Shell ,Ruby程序員也希望可以在教新人時(shí)不必強(qiáng)迫別人換操作系統(tǒng)筋栋。
不過我覺得最大的一個(gè)影響應(yīng)該是關(guān)于 Docker 的,微軟這個(gè)技術(shù)的推出將有助于為 Docker 進(jìn)入 Windows 鋪路抢腐,甚至我猜想這可能就是微軟搞這一套技術(shù)的直接目的襟交。
我們來看一下具體的技術(shù)迈倍,這個(gè)東西表面上看就像個(gè)模擬器捣域,類似cygwin,也可能有人會(huì)想到虛擬機(jī)提完,但是它實(shí)際上要更直接丘侠,它是在用 Windows 內(nèi)核實(shí)現(xiàn)了對(duì) Linux 系統(tǒng)調(diào)用的兼容支持,由于不需要高成本的模擬蜗字,它的性能是相當(dāng)可觀的(甚至有不少人認(rèn)為,如果是用IOCP來實(shí)現(xiàn)epoll挪捕,那么它的性能有可能比Linux原生的epoll還要好)。
參考wikipedia上的這個(gè)圖断医,看看體系架構(gòu):
我們知道奏纪,WinNT系的內(nèi)核本身其實(shí)是很牛的,它的API是有一個(gè)抽象層作為隔離的序调,而Win32 API可以看做這個(gè)抽象層的一個(gè)實(shí)現(xiàn),理論上并沒有什么特殊地位硬耍,這樣就可以象支持原生 windows 程序一樣支持 linux 程序了,那么我們之前為什么一直沒看到 Linux on Windows呢经柴?
因?yàn)榧夹g(shù)牛不意味著市場會(huì)接受,這個(gè)設(shè)計(jì)曾經(jīng)被認(rèn)為有過度設(shè)計(jì)的嫌疑坯认,據(jù)說微軟做了這個(gè)設(shè)計(jì)以后也沒看到有啥大的價(jià)值,因此并沒有在這個(gè)抽象層上做出一個(gè)與 Linux API 兼容的實(shí)現(xiàn)韭寸。
這一切在 Docker 出現(xiàn)以后就變化了荆隘。近兩年,Docker 技術(shù)發(fā)展十分迅猛椰拒,由于它本質(zhì)上是對(duì) Linux 的再發(fā)明,因此本來和微軟沒什么關(guān)系燃观。但是,Docker 一方面占據(jù)了“云計(jì)算”這個(gè)領(lǐng)域的重要位置番川,另一方面又對(duì)服務(wù)器軟件研發(fā)有很重要的推動(dòng)作用(devops運(yùn)動(dòng))脊框,這些都是微軟很看重的地方,所以它很早就在謀劃擁抱 Docker 和容器技術(shù)浇雹。
用 “微軟+Docker” 作為關(guān)鍵字 Google 能找到幾條新聞,放在一起看很有意思:
注意看看那幾條新聞的時(shí)間吠裆,說實(shí)話烂完,我當(dāng)時(shí)看到最早的那條新聞時(shí)還沒法想象微軟會(huì)做出這么大的努力,但它的節(jié)奏十分清晰窜护,先是做一個(gè)簡單到只有 http 封裝的 Docker CLI 作為試水(也可能是為了卡位吧),然后再將 Windows 軟件本身的工作方式和容器化趨勢(shì)結(jié)合起來柱徙。截止到最近,微軟的方法思路和 Docker 是一樣的敌完,理論上它的 Windows 也可以跑容器羊初,這樣,微軟在服務(wù)器市場也可以分得一杯羹长赞。
然而還有一個(gè)困難——“內(nèi)核”,我們知道脯颜,Docker鏡像可以跨越各種 Linux Distribution贩据,然而必須受限于宿主機(jī)的內(nèi)核版本栋操,這是它為了超越虛擬機(jī)的性能而不得不損失的獨(dú)立性饱亮,Windows Server 即使能象“容器宿主機(jī)”一樣工作,也會(huì)由于不能支持眾多 Docker 鏡像(都是基于 Linux 的)所需要的 API 而干瞪眼剔宪。
現(xiàn)在微軟補(bǔ)上了這個(gè)短板。
根據(jù)目前看到的說法歼跟,Windows Server 將可以提供 Linux 兼容的 API 格遭,因此理論上可以很好的支持現(xiàn)有的所有 Docker 鏡像,這對(duì)于云計(jì)算環(huán)境是非常有幫助的拒迅。又因?yàn)檫@種支持并不是“模擬式”的,因此并沒有損失 Docker 的一個(gè)重要優(yōu)勢(shì)——性能作箍。
從這個(gè)角度看前硫,這個(gè)號(hào)稱“Win10與Ubuntu合體”的技術(shù)胞得,并不是象它的標(biāo)題一樣僅僅是好玩屹电,而是在微軟的戰(zhàn)略路線中應(yīng)該有一個(gè)很重要的位置跃巡。有很多朋友說這是微軟挖的一個(gè)坑牧愁,言下之意是說微軟自己可能“管挖不管埋”,但如果微軟自己不作死兔朦,它應(yīng)該會(huì)重視和完善這個(gè)技術(shù)的磨确。