開啟 Wasm 工作負載Wasm 工作負載需要開啟 containerd 映像檔存放區 功能。如果您尚未使用 containerd 映像檔存放區,則先前存在的映像檔和容器將無法存取。
- 在 Docker Desktop 中瀏覽至「設定」。
- 在「一般」索引標籤中,勾選「使用 containerd 來提取和儲存映像檔」。
- 前往「開發中的功能」並勾選「啟用 Wasm」選項。
- 選擇「套用並重新啟動」以儲存設定。
- 在確認對話方塊中,選擇「安裝」以安裝 Wasm 執行階段。
Docker Desktop 會下載並安裝您可以用來執行 Wasm 工作負載的下列執行階段
io.containerd.slight.v1
io.containerd.spin.v2
io.containerd.wasmedge.v1
io.containerd.wasmtime.v1
io.containerd.lunatic.v1
io.containerd.wws.v1
io.containerd.wasmer.v1
下列 docker run
命令會在您的系統上啟動 Wasm 容器
執行此命令後,您可以造訪 http://localhost:8080/ 以尋求協助。
請注意此命令中使用的 --runtime
和 --platform
旗標
--runtime=io.containerd.wasmedge.v1
:告知 Docker 引擎您要使用 Wasm containerd shim,而不是標準的 Linux 容器執行階段--platform=wasi/wasm
:指定您要使用的映像檔的架構。藉助 Wasm 架構,您無需為不同的機器架構建構單獨的映像檔。Wasm 執行階段負責將 Wasm 二進位檔轉換為機器指令的最後步驟。
可以使用下列 Docker Compose 檔案執行相同的應用程式
使用正常的 Docker Compose 命令啟動應用程式
網路的運作方式與您對 Linux 容器的預期相同,讓您可以彈性地將 Wasm 應用程式與其他容器化工作負載(例如資料庫)組合在單個應用程式堆疊中。
在以下範例中,Wasm 應用程式利用在容器中執行的 MariaDB 資料庫。
複製儲存庫。
瀏覽至複製的專案,並使用 Docker Compose 啟動專案。
如果您從另一個終端機視窗執行 docker image ls
,您可以在映像檔存放區中看到 Wasm 映像檔。
檢查映像檔會顯示映像檔具有 wasi/wasm
平台,這是作業系統和架構的組合
在瀏覽器中開啟網址 http://localhost:8090
並建立一些範例訂單。所有這些都與 Wasm 伺服器互動。
全部完成後,請在您啟動應用程式的終端機中按下 Ctrl+C
以關閉所有內容。
建立一個建構 Wasm 應用程式的 Dockerfile。
具體操作方式取決於您使用的程式語言。
在 Dockerfile 的單獨階段中,提取模組並將其設定為 ENTRYPOINT
。
建構和推送指定 wasi/wasm
架構的映像檔。Buildx 可以讓您輕鬆地在單個命令中完成此操作。
本節包含有關如何解決常見問題的說明。
如果您嘗試在沒有 containerd 映像檔存放區 的情況下執行 Wasm 容器,則會顯示類似以下的錯誤
在 Docker Desktop 設定中開啟 containerd 功能,然後再試一次。
如果您使用的是不支援執行 Wasm 工作負載的舊版 Docker Desktop,您會看到類似以下的錯誤訊息
請將您的 Docker Desktop 更新至最新版本,然後再試一次。
- Docker Compose 在中斷時可能無法完全退出
- 解決方法:透過傳送 SIGKILL(`killall -9 docker-compose`)清除 `docker-compose` 程序。
- 即使使用 Docker Desktop 登入後,推送至 Hub 可能仍會出現錯誤訊息 `server message: insufficient_scope: authorization failed`
- 解決方法:在 CLI 中執行 `docker login`
感謝您試用 Docker 的 Wasm 工作負載。請透過公開路線圖項目 的問題追蹤器提供您的意見回饋或回報您可能發現的任何錯誤。