WebAssembly真的要取代Docker嗎?
有一個討論引起了大家的興趣:由于其設(shè)計(jì),WebAssembly(也稱為Wasm)可能在許多情況下取代Docker。但正如我們將在本文中看到的那樣,過分關(guān)注WebAssembly的這一方面是不夠的,因?yàn)楦匾氖荳ebAssembly可以支持的業(yè)務(wù)用途。
然而,就像任何有趣的新編程語言或技術(shù)一樣,Wasm價值的真正考驗(yàn)是它的業(yè)務(wù)用途,而且Wasm在簡單性、可移植性和安全性方面的優(yōu)勢使它成為彌補(bǔ)Docker缺點(diǎn)的一個很好的候選人,尤其是在邊緣和分布式應(yīng)用程序方面。
WebAssembly可以用于將JavaScript(JS)、C++和Rust以及HTML和CSS集成到一個二進(jìn)制格式的運(yùn)行時平臺中,該平臺直接在CPU上的機(jī)器級別上運(yùn)行。它可以用于支持web應(yīng)用程序,并擴(kuò)展到任何在CPU上運(yùn)行的邊緣環(huán)境和云本機(jī)平臺,包括服務(wù)網(wǎng)格和邊緣Kubernetes支持。Wasm也存在了一段時間,直到2019年萬維網(wǎng)聯(lián)盟(W3C)將其命名為Web標(biāo)準(zhǔn),從而成為第四個包含HTML、CSS和JavaScript的Web標(biāo)準(zhǔn)。
Adobe高級軟件工程師Colin Murphy在演講中詳細(xì)介紹了CDN edge compute和Wasm/WASI平臺,以及當(dāng)前和未來的Adobe應(yīng)用程序。Murphy表示,為了提高業(yè)務(wù)績效,Wasm可能成為Docker的繼任者。Murphy說,“我四處看,想看看‘Docker with Kubernetes的后繼者是什么’,當(dāng)了解WebAssembly時,我發(fā)現(xiàn)的是‘可以使用生產(chǎn)中實(shí)際使用的微服務(wù),并且可以使用WebAssembly將其部署在服務(wù)器邊緣的客戶端上?!?/p>
例如,與Docker相關(guān)的主要問題之一是CVE文件中可能存在漏洞。Murphy在一次采訪中說:“有時,同一個漏洞可以有多個CVE作為Docker容器。使用WebAssembly,你沒有任何第三方的東西。只需將其視為二進(jìn)制文件即可。當(dāng)然,安全問題總是存在的。但是,你不必?cái)y帶操作系統(tǒng)的所有其余部分,也不必假裝它是一個操作系統(tǒng),因?yàn)樗鼘?shí)際上是自己的單元”,這有助于使Wasm具有吸引力。
然而,Murphy說,也不要指望Wasm會完全取代Docker。
“仍有大型機(jī),仍有主機(jī)OSS,仍有具有非常特殊業(yè)務(wù)用例的虛擬機(jī),并將繼續(xù)使用。但仍有一些非常好的地方,特別是在5G汽車的邊緣,以及所有這些類型的應(yīng)用程序,在這些應(yīng)用程序中,物聯(lián)網(wǎng)與世界接軌,并與邊緣接軌,在這些應(yīng)用程序中,你無法用Docker?!?/p>
Docker產(chǎn)品負(fù)責(zé)人Jake Leverne表示,Wasm是否有可能最終完全取代Docker的使用,這是一個不合理的問題。問這個問題表明并沒有正確地理解開發(fā)人員市場是如何運(yùn)作的,因?yàn)閃asm作為一種技術(shù)并不能取代Docker。
Leverne說:“Wasm是對Docker的補(bǔ)充,無論開發(fā)人員選擇何種方式來構(gòu)建和實(shí)現(xiàn)其應(yīng)用程序的一部分,Docker都將支持他們的開發(fā)體驗(yàn)?!?/p>
Leverne說,使用Docker的開發(fā)、測試和部署工具鏈,無論應(yīng)用程序架構(gòu)如何,都可以更輕松地維護(hù)可復(fù)制的應(yīng)用程序交付管道。此外,數(shù)百萬預(yù)構(gòu)建的Docker鏡像,包括數(shù)千個官方和經(jīng)驗(yàn)證的鏡像,提供了“核心服務(wù)的主干(如數(shù)據(jù)存儲、緩存、搜索、框架等)”,可以與Wasm模塊一起使用。
Leverne說:“隨著時間的推移,容器運(yùn)行時和注冊表將擴(kuò)展到包括原生Wasm模塊支持。事實(shí)上,這已經(jīng)在發(fā)生了。”