可以看到,Docker Engine 继续使用与整体生态相统一的 containerd 容器运行时,但创建了一个新的 containerd shim—— 把负责容器进程运行的 runC 替换成 WasmEdge runtime。据称这是和 WasmEdge 合作的项目,这个 containerd shim 从 OCI artifact 中提取 Wasm 模块,并使用 WasmEdge runtime 来运行。
Docker 没有透露更多细节,但 WasmEdge 承诺会提供优于 Linux 容器的启动时间,而且 WasmEdge 应用程序的体积也明显更小,且运行速度更快。
Docker 联合创始人 Michael Irwin 写道:“我们将 Wasm 视为 Linux 容器的补充性技术,开发者可以结合自身情况选择最适合的技术方案(或者二者并用)。随着社区对 Wasm 的探索,我们希望开发者可以使用熟悉和喜爱的经验和工具,帮助让 Wasm 应用程序更易于开发、构建和运行。”
使用
使用下面命令即可启动示例 Wasm 应用程序:参数解释:
docker run -dp 8080:8080 --name=wasm-example --runtime=io.containerd.wasmedge.v1 --platform=wasi/wasm32 michaelirwin244/wasm-example
<font style="color:rgb(71, 193, 168);">--runtime=io.containerd.wasmedge.v1</font>
– 告知 Docker Engine 要使用 Wasm containerd shim 而不是标准的 Linux 容器运行时<font style="color:rgb(71, 193, 168);">--platform=wasi/wasm32</font>
– 指定要使用的镜像的架构。通过利用 Wasm 架构,开发者无需为不同的架构构建单独的镜像。Wasm runtime 将完成将 Wasm 二进制文件转换为机器指令的最后一步。
获取方式
下载 Docker Desktop 的技术预览版本即可体验 Docker+Wasm:
- macOS Apple Silicon:https://dockr.ly/3sf56vH
- macOS Intel:https://dockr.ly/3VF6uFB
- Windows AMD64:https://dockr.ly/3ShlsP0
- Linux Arm64 (deb):https://dockr.ly/3TDcjRV
- Linux AMD64 (deb):https://dockr.ly/3TgpWH8(rpm):https://dockr.ly/3eG6Mvp(tar):https://dockr.ly/3yUhdCk