本文來自Mobingi官方技術(shù)專欄,歡迎關(guān)注
本文翻譯自Finally, Linux Containers Could Run on Windows with Docker’s LinuxKit
自從兩年前推出第一個測試版,有一件事Windows容器一直沒有做裳擎,就是基于Windows環(huán)境,在Linux容器中思币,運行Linux程序集鹿响。這個所謂的“Linux子系統(tǒng)”,是一件必須要做的事谷饿。一年前微軟確實發(fā)布了一個東西惶我,但是奇怪的是,他并沒有解決這個容器移植問題博投。
四月看起來是Docker和微軟一起取得進展的一個月绸贡,周二上午在奧斯汀召開的 DockerCon 2017大會上,Docker公司的首席技術(shù)官 Solomon Hykes宣布毅哗,將開源一部分由Docker公司主持參與開發(fā)的用于構(gòu)建“Linux子系統(tǒng)”的工具集听怕,叫LinuxKit,它將會提供一個剛剛好的基于Linux的平臺,在應用程序的下層虑绵,用于支持容器運行Linux應用程序尿瞭。它可以運行在任何操作系統(tǒng)上,包括Mac OS和Windows翅睛;也可以運行在任何的主要云平臺上声搁,包括AWS,或者更不可思議地運行在一臺裸機上(沒有安裝任何操作系統(tǒng))捕发。
“Linux明顯是一個安全的操作系統(tǒng)”疏旨,Hykes宣稱,“它不需要我們在安全方面的幫助扎酷,但是檐涝,還有一些問題。當你假設(shè)任何東西都是一個容器的話法挨,你可以把安全帶到一個新的水平骤铃。你可以做很多假設(shè),比如坷剧,你可以定制一些專門的補丁和配置惰爬,從而進一步強化系統(tǒng)”蛊螅”
Hykes花了一些時間來證實他的觀點撕瞧,不過他實際上已經(jīng)抓到了一些人的眼球陵叽。當容器化運行在一個本身也被包裹在其他宿主環(huán)境(比如另外一個Linux系統(tǒng),或者一個第一代虛擬機)的空間中丛版,所有的最嚴重的潛在安全風險都與宿主機和客戶機的邊界間通信有關(guān)巩掺。
在一個所有系統(tǒng)都被虛擬化的環(huán)境中,沒有上面所說的邊界存在页畦。所以胖替,任何專門解決容器的安全性和認證問題的組件(比如 Docker Notary)也可能被用作底層系統(tǒng)安全網(wǎng)關(guān)。想象一下豫缨,基于角色訪問一個具有“l(fā)inux子系統(tǒng)”的容器独令,你會從中得到更多啟發(fā)。
“我不認為Docker需要對你的Linux子系統(tǒng)的安全性負責好芭,”Hykes承認燃箭,“實際上,我們不認為任何一個公司需要為此全權(quán)負責舍败。Linux太大了招狸,也太重要了。所以邻薯,你依賴的使Linux本身安全的進程是開放的且社區(qū)驅(qū)動的裙戏,這一點非常非常重要。并且厕诡,在過去幾年里累榜,Linux社區(qū)也確實產(chǎn)出了許多好的成果嫩实。比起多躲在角落里做所有事裆站,不如從第一天開始就加入到這些開放的進程中流昏。
這不僅”開放“的回歸,同時也是Docker公司在2015年采取與外部合作的政策醒第。但是去年當Docker群服務融入企業(yè)級平臺時,它似乎被放棄過进鸠。事實上稠曼,Hykes再次詳述了作為組件社區(qū)的容器生態(tài),而Docker公司對此生態(tài)做的貢獻有限客年,沒有哪個單一組件能成為其他所有組件必不可缺的核心霞幅。
該公司的明確政策是,限制Kubernetes(或者其他任何人)對容器生態(tài)提的要求量瓜。這使得Docker公司不會失去任何一個和他們站在同一舞臺上的合作伙伴司恳,比如微軟。
代表微軟Azure核心開發(fā)團隊的 John Gossman表示:”正如你所知绍傲,Docker開始于一個以Linux為目標系統(tǒng)的項目扔傅,Docker將一些復雜的內(nèi)核特性集成耍共,使我們得到了我們非常喜歡的簡單易用的開發(fā)體驗。并且Windows團隊也想讓Windows開發(fā)者們有同樣的開發(fā)體驗猎塞∈远粒”
Gossman講述了我們都知道的,為什么微軟開發(fā)Windows容器(現(xiàn)稱為Windows Server Containers)和Hyper-V容器的兩個獨立格式的故事荠耽。 前者以基于Linux的Docker容器共享Linux內(nèi)核的方式共享Windows內(nèi)核钩骇,而Hyper-V容器允許客戶機操作系統(tǒng)通過虛擬機在不同的主機平臺上運行客戶機操作系統(tǒng)的應用程序。 因此铝量,對于Windows Server 2016倘屹,Microsoft為基于Windows的Hyper-V容器創(chuàng)建了一種隔離空間,可以最大限度地減少該虛擬機的占用資源款违。Gossman說唐瀑,借助于LinuxKit,這種隔離方案正在擴展到基于Linux的容器中插爹。
Gossman的演示已經(jīng)充分證明理論上開發(fā)者可以在Windows上哄辣,用Windows的工具進行開發(fā)、編譯赠尾、集成力穗,然后在一個裝載Hyper-V的隔離空間里的Linux容器鏡像中運行Linux程序。他的演示程序包括一個嵌入在linux容器中的BusyBox鏡像气嫁,并且Gossman證明了他可以在他的筆記本上運行并激活這個Linux內(nèi)核当窗。這也同樣證明了任何Linux,大到企業(yè)級的Linux寸宵,小到最小化的CoreOS都可以作為程序運行的宿主機崖面。當然,在聽眾中一定有不少人可能計劃過用SELinux作為隔離空間的內(nèi)核梯影。
“你的平臺安全性取決于它安全性最弱的組件巫员,”Docker公司的Hykes說,這樣使得Docker將所有關(guān)于安全性責任的爭論轉(zhuǎn)移到Linux頭上甲棍〖蚴叮“你必須單獨考慮每一層,”他繼續(xù)說感猛,“Docker有許多組件七扰,我們一直很擔心它們存在的所有安全問題,以及組件與安全性之間如何相互配合陪白【弊撸”
Hykes在他的主題演講中表示,Docker的整個演進過程都是“投訴驅(qū)動的”咱士。開發(fā)人員抱怨疫鹊,工程師組裝和修正袖瞻,平臺得到改進。開發(fā)人員兩年前確實有過大聲抱怨拆吆。如果歷史證明Hykes是正確的聋迎,我們需要銘記Docker公司是如何回應這個抱怨的。