WinDocks發(fā)布了一個(gè)Windows版本的Docker引擎,它可以運(yùn)行在作為底層宿主的Windows Server 2012或Windows Server 2012 r2系統(tǒng)上。它可以運(yùn)行MS SQL Server的多個(gè)版本,并支持.NET 2、3.5和4.5。
WinDocks是一個(gè)移植到Windows的Docker引擎,它與近日發(fā)布的Docker on Windows并不相同。官方Docker客戶端可以同WinDocks一起使用,后者僅支持Docker命令的一個(gè)子集,包括build、create、commit、exec、ps、start和stop。
WinDocks利用了一個(gè)由Uhuru軟件構(gòu)建的開源容器項(xiàng)目以及他們自己對(duì)Docker引擎的移植。
Windows 2012的內(nèi)核沒有為容器所需的隔離要求提供原生支持。WinDocks使用了Windows Job Objects作為容器的底層技術(shù),后者可以將進(jìn)程作為一個(gè)單元進(jìn)行管理。
Job Object可以用于控制一組進(jìn)程的資源使用率,如進(jìn)程優(yōu)先級(jí)和CPU使用率。這些控制包括針對(duì)文件權(quán)限、文件系統(tǒng)的自由訪問控制列表(DACL)、針對(duì)命名空間隔離的注冊(cè)表過濾和管理網(wǎng)絡(luò)操作的Windows過濾平臺(tái)。Windows過濾平臺(tái)提供了網(wǎng)絡(luò)數(shù)據(jù)包處理和過濾功能。
Linux容器的隔離,包括Docker提供的隔離,是通過控制組(cgroups)實(shí)現(xiàn)的。由于Windows 2012缺少類似的機(jī)制,需要將多種功能拼湊在一起才能在WinDocks中實(shí)現(xiàn)這項(xiàng)功能。InfoQ聯(lián)系了WinDocks,以了解更多與由此而生的安全問題相關(guān)的信息。WinDocks創(chuàng)始人Ramesh Parameswaran答復(fù)說:
在每個(gè)租戶都是不同組織的場(chǎng)景中,我們不建議使用Windocks。它不是一種100%進(jìn)程隔離的方案,但也在很大程度上實(shí)現(xiàn)了隔離。WinDocks中的容器進(jìn)程有內(nèi)存和CPU使用限制,所以單個(gè)進(jìn)程不會(huì)導(dǎo)致機(jī)器故障。
目前,WinDocks容器僅限于.NET和MS SQL Server鏡像。這些鏡像既可以是打包了產(chǎn)品的基本的SQL Server鏡像,也可以是由基本鏡像派生而來的自定義SQL鏡像。為了創(chuàng)建一個(gè)自定義SQL鏡像,用戶可以從基本鏡像啟動(dòng)一個(gè)容器,添加一個(gè)MDF文件,并將容器提交給一個(gè)新鏡像,接下來,用戶就可以使用這個(gè)新鏡像啟動(dòng)自定義容器了。在MS SQL中,基礎(chǔ)數(shù)據(jù)文件在創(chuàng)建時(shí)通常使用MDF擴(kuò)展名。
此外,也可以通過網(wǎng)絡(luò)掛載使用遠(yuǎn)程SQL Server數(shù)據(jù)庫。據(jù)Parameswaran介紹,WinDocks接下來的重點(diǎn)是改進(jìn)日志功能,提供Jenkins集成,以便納入持續(xù)集成/持續(xù)交付(CI/CD)管道。
查看英文原文:Docker Engine Port for Windows Released