Docker+Wasm 技术预览版 2 发布
Docker 宣布了 Docker+Wasm 的第二个技术预览版,旨在简化 Wasm 工作负载的运行,并通过新增对 Fermyon 的 Spin、Deislabs 的 Slight 和 Bytecode Alliance 的 Wasmtime 运行时引擎的支持来扩展运行时的多样性。
新增 Wasm 运行时引擎
新加入的三个 Wasm 引擎使得 Docker+Wasm 支持的运行时总数达到四个,包括在第一个技术预览版中已经支持的 WasmEdge。所有这些运行时引擎都基于 runwasi 库,该库最近加入了 containerd 项目。
runwasi 库的作用
runwasi 是一个 Rust 库,用于通过 containerd 管理 Wasm 工作负载,从而在原有的 Linux 容器之外,创建了一种新的容器类型抽象。runwasi 基于 WASI(WebAssembly 系统接口),这是一个模块化的系统接口,为 Wasm 运行时提供了一个通用平台。这意味着如果一个程序编译为针对 WASI 的目标,它可以在任何符合 WASI 规范的运行时上运行。
Wasm 容器的优势
Wasm 容器通常只包含一个编译后的 Wasm 字节码文件,不需要额外的二进制库,因此体积更小。这也意味着 Wasm 容器的启动速度通常比 Linux 容器更快,并且更具可移植性。例如,WasmEdge 联合创始人 Michael Yuan 在 Twitter 上指出,一个 "slim" 版本的 Python Linux 容器镜像超过 40MB,而其 Wasm 容器版本则不到 7MB。
如何在 Docker Desktop 中启用 Wasm 容器
由于 Wasm 容器得到了 containerd 的直接支持,因此要在 Docker Desktop 的最新版本中试用 Docker+Wasm 技术预览版 2,只需在 设置 > 开发中的功能 下启用 "Use containerd" 选项。
运行 Wasm 容器的命令示例
要使用 wasmtime 运行一个 Wasm 容器,可以执行以下命令:
$ docker run --rm --runtime=io.containerd.wasmtime.v1
--platform=wasi/wasm secondstate/rust-example-hello:latestWasm 容器与 Linux 容器的共存
得益于这一功能,Wasm 容器可以与 Linux 容器一起使用 Docker Compose 或其他编排平台(如 Kubernetes)进行管理。此外,Docker Desktop 能够通过将 Wasm 运行时嵌入到 OCI 容器中,将 Wasm 应用打包成 OCI 容器,从而可以通过 DockerHub 等容器注册表进行共享。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。