在奧斯汀市舉辦的DockerCon大會(huì)上,Docker宣布了兩個(gè)重大的開源項(xiàng)目Moby和LinuxKit。從根本上講,Moby標(biāo)志著Docker的分裂,這個(gè)Docker公司的開源項(xiàng)目已經(jīng)從GitHub庫docker/docker遷移到moby/moby。LinuxKit提供了一套工具,用于構(gòu)建“只包含運(yùn)行時(shí)平臺(tái)需要的組件的定制化Linux子系統(tǒng)”。
來自Rancher的Darren Shepherd在推特中將Moby的目標(biāo)歸結(jié)為:
對(duì)Moby感到困惑?簡單來說,對(duì)于@docker用戶而言,什么都沒變。這是一個(gè)內(nèi)部項(xiàng)目的變化,為了幫助類似@Rancher_Labs這樣的系統(tǒng)構(gòu)建者。
Docker首席技術(shù)官Solomon Hykes對(duì)于此舉的解釋是:
按照設(shè)計(jì),Moby面向的是希望基于容器構(gòu)建自己的系統(tǒng)的系統(tǒng)構(gòu)建者,而不是可以使用Docker或其他容器平臺(tái)的應(yīng)用程序開發(fā)人員。Moby項(xiàng)目的參與者可以從源于Docker的組件庫中選擇,或者他們也可以選擇“帶來自己的組件”(BYOC),包括可以打包成容器,然后混合搭配所有組件,創(chuàng)建一個(gè)定制化的容器系統(tǒng)。
人們最初對(duì)Moby項(xiàng)目的目的和Docker的初衷有些不解,尤其是圍繞“docker”命令行工具。對(duì)此,Hykes在推特上進(jìn)行了解釋:
Moby是構(gòu)建Docker本身(或某種類似的東西)的項(xiàng)目。
而
用戶不受影響。Docker二進(jìn)制文件保持不變。
最后,為了進(jìn)一步說明,一組維護(hù)人員一起在Moby項(xiàng)目的首頁上添加了“Moby和Docker”的描述。后來,Hykes手繪了一張Moby項(xiàng)目的架構(gòu)草圖,以及它和上下游組件的關(guān)系,Alvaro Miranda基于此整理并創(chuàng)建了下圖:
有關(guān)LinuxKit發(fā)布的博文出自Justin Cormack之手。他是Docker公司英國劍橋辦公室的其中一名軟件工程師。該辦公室源于對(duì)Unikernel Systems的收購:
LinuxKit提供的工具讓你可以構(gòu)建只包含運(yùn)行時(shí)平臺(tái)所需組件的定制化Linux子系統(tǒng)。所有系統(tǒng)服務(wù)都是可替換的容器,任何不必要的東西都可以移除。
因此,LinuxKit并不太關(guān)心容器內(nèi)包含什么,那可以是GoLang 'FROM SCRATCH'模式、Alpine Linux或者其他任意的發(fā)行版,這取決于用戶對(duì)大小、安全表面積及工具熟悉度的要求。Docker還宣布了多階段構(gòu)建,在構(gòu)建容器時(shí),一旦所需的二進(jìn)制文件創(chuàng)建了出來,文件構(gòu)建過程中使用的工具就可以去掉了。LinuxKit不同,它關(guān)注的是容器之外的東西,它提供了一種方法,用于組裝最小的、并可針對(duì)特定的部署平臺(tái)進(jìn)行裁剪的運(yùn)行時(shí)環(huán)境。因此,它和Unikernel在概念上有許多相似之處,差別在于,它本質(zhì)上仍然是Linux內(nèi)核,而不是一個(gè)專用的二進(jìn)制文件。“剛剛夠操作系統(tǒng)(JeOS)”是一個(gè)源于云計(jì)算初期的概念,隨著像rPath這樣的公司創(chuàng)建了最小系統(tǒng)鏡像工具而出現(xiàn);LinuxKit利用容器的普及,將這種方法現(xiàn)代化,廣泛簡化了與依賴管理相關(guān)的問題。
兩份聲明主要是關(guān)于Docker公司本身在其所培育的容器生態(tài)系統(tǒng)中的地位,它們對(duì)當(dāng)前用戶體驗(yàn)的影響微乎其微。Moby在什么是Docker開源項(xiàng)目和什么是Docker公司之間劃出了清晰的界限;同時(shí)帶來了更好的模塊化。LinuxKit帶來了新的Docker運(yùn)行方法,在某種程度上和類似CoreOS這樣的針對(duì)容器優(yōu)化過的Linux發(fā)行版形成了競爭。不過,其目標(biāo)不止于此,因?yàn)長inuxKit開始將兩個(gè)單獨(dú)的問題(運(yùn)行容器的操作系統(tǒng)和在操作系統(tǒng)中運(yùn)行的容器)放在了一起,讓它們成為一個(gè)一致的部署工件。
查看英文原文:Moby and LinuxKit Open Source from Docker