WebAssembly,通常簡稱為 Wasm,是一種相對較新的技術(shù),允許您編譯用 40 多種語言(包括 Rust、C、C++、JavaScript 和 Golang)編寫的應(yīng)用程序代碼,并在沙盒環(huán)境中運行它" />
什么是 Wasm?
WebAssembly,通常簡稱為 Wasm,是一種相對較新的技術(shù),允許您編譯用 40 多種語言(包括 Rust、C、C++、JavaScript 和 Golang)編寫的應(yīng)用程序代碼,并在沙盒環(huán)境中運行它。
最初的用例側(cè)重于在網(wǎng)絡(luò)瀏覽器中運行本機(jī)代碼,例如Figma、AutoCAD和Photoshop。事實上,fastq.bio在將其基于 Web 的 DNA 序列質(zhì)量分析器轉(zhuǎn)換為 Wasm 時,速度提高了20 倍。迪士尼在 Wasm 之上構(gòu)建了他們的Disney+ 應(yīng)用程序開發(fā)工具包!瀏覽器中的好處顯而易見。
但由于WebAssembly 系統(tǒng)接口(WASI),Wasm 正在迅速傳播到瀏覽器之外。Vercel、Fastly、Shopify和Cloudflare等公司支持使用 Wasm 在邊緣運行代碼,而Fermyon正在構(gòu)建一個平臺以在云端運行 Wasm 微服務(wù)。
為什么是Docker?
在 Docker,我們的目標(biāo)是通過克服應(yīng)用程序開發(fā)的復(fù)雜性來幫助開發(fā)人員將他們的想法變?yōu)楝F(xiàn)實。我們努力讓構(gòu)建、共享和運行您的應(yīng)用程序變得容易,無論底層技術(shù)如何。通過讓所有人都能使用容器,我們證明了我們有能力讓開發(fā)人員的生活更輕松,并被公認(rèn)為最受歡迎的開發(fā)人員工具第一名。
我們將 Wasm 視為 Linux 容器的補(bǔ)充技術(shù),開發(fā)人員可以根據(jù)用例選擇他們使用的技術(shù)(或兩者?。?。隨著社區(qū)探索 Wasm 的可能性,我們希望使用您了解和喜愛的經(jīng)驗和工具幫助使 Wasm 應(yīng)用程序更容易開發(fā)、構(gòu)建和運行。
Wasm 集成實際上是如何工作
1.我們正在利用我們最近的工作將圖像管理遷移到 containerd,因為它提供了使用與 OCI 兼容的工件和 containerd 墊片的能力。
2.我們與WasmEdge合作創(chuàng)建了一個 containerd shim。該 shim 從 OCI 工件中提取 Wasm 模塊并使用 WasmEdge 運行時運行它。
3.我們添加了聲明 Wasm 運行時的支持,這將允許使用這個新的 shim。

安裝預(yù)覽版后,我們可以運行以下命令來啟動示例 Wasm 應(yīng)用程序:
docker run -dp 8080:8080 --name=wasm-example --runtime=io.containerd.wasmedge.v1 --platform=wasi/wasm32 michaelirwin244/wasm-example
由于一些標(biāo)志可能不熟悉,讓我們解釋一下它們在做什么:
--runtime=io.containerd.wasmedge.v1– 這會通知 Docker 引擎我們要使用 Wasm containerd shim 而不是標(biāo)準(zhǔn)的 Linux 容器運行時
--platform=wasi/wasm32– 這指定了我們要使用的圖像的架構(gòu)。通過利用 Wasm 架構(gòu),我們不需要為不同的架構(gòu)構(gòu)建單獨的圖像。Wasm 運行時將完成將 Wasm 二進(jìn)制文件轉(zhuǎn)換為機(jī)器指令的最后一步。
鏡像拉取后,runtime 會讀取ENTRYPOINT鏡像的 來定位并提取 Wasm 模塊。然后將該模塊加載到 Wasm 運行時、啟動并配置網(wǎng)絡(luò)?,F(xiàn)在我們的機(jī)器上運行了一個 Wasm 應(yīng)用程序!
這個特定的應(yīng)用程序是一個簡單的 Web 服務(wù)器,上面寫著“Hello world!” 并將數(shù)據(jù)回顯給我們。為了驗證它是否正常工作,讓我們首先查看日志。
docker logs wasm-example
Server is now running
我們可以通過打開http://localhost:8080或使用 curl 來獲取“Hello world”消息。
curl localhost:8080
我們的響應(yīng)會給我們一條 Hello world 消息:
Hello world from Rust running with Wasm! Send POST data to /echo to have it echoed back to you
要將數(shù)據(jù)發(fā)送到 echo 端點,我們可以使用 curl:
curl localhost:8080/echo -d '{"message":"Hi there"}' -H "Content-type: application/json"
我們將看到發(fā)回以在響應(yīng)中使用的數(shù)據(jù):
{"message":"Hi there"}
要刪除應(yīng)用程序,您可以像刪除任何其他 Docker 服務(wù)一樣刪除它:
docker rm -f wasm-example
新的集成意味著您可以與 Linux 容器一起運行 Wasm 應(yīng)用程序(甚至使用 Compose)。
本文鏈接:http://www.yifxia.cn/showinfo-119-2492-0.htmlDocker+Wasm 技術(shù)預(yù)覽簡介
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com