Docker+Wasm第2个技术预览版发布,新增3个运行时引擎支持
Docker 宣布了 Docker+Wasm 的第 2 个技术预览版,旨在简化 Wasm 工作负载的运行,并扩展运行时支持,包括 Fermyon 的 spin,Deislabs 的 slight 和 Bytecode Alliance 的 wasmtime 运行时引擎。
Docker+Wasm 中新增支持的 3 个 Wasm 引擎使其支持的运行时总数达到了 4 个,其中包括在 Docker+Wasm 第 1 个技术预览版中已经支持的 WasmEdge。它们都基于 runwasi 库。该库最近加入了 containerd 项目。
runwasi 是一个 Rust 库,它支持运行通过 containerd 管理的 wasm 工作负载。因此,除了 containerd 最初支持的 Linux 容器之外,它还为新的容器类型创建了一个有效的抽象。顾名思义,runwasi 是基于 WASI 的。WASI 是 WebAssembly 的模块化系统接口,为 Wasm 运行时提供了一个公共平台。也就是说,如果一个程序被编译为目标 WASI,那么它就可以在任何符合 WASI 标准的运行时上运行。
通常,Wasm 容器只包含一个编译好的 Wasm 字节码文件,而且不需要任何额外的二进制库,这使得容器小很多。这也意味着 Wasm 容器的启动速度通常比 Linux 容器更快,而且可移植性更好。例如,正如 WasmEdge 联合创始人 Michael Yuan 在 Twitter 上所说的那样,Linux 上“最小”的 Python 容器镜像超过 40MB,而对应的 Wasm 容器镜像不到 7MB。
作为 containerd 直接支持的 Wasm 容器,要在 Docker Desktop 的最新版本中尝试 Docker+Wasm 的第 2 个技术预览版,唯一需要做的事情是启用开发 > Settings > Features 下的“Use containerd”选项。
使用 wasmtime 运行 Wasm 容器,可以执行以下命令:
正因为如此,借助 Docker Compose 或其他编排平台(如 Kubernetes),Wasm 容器可以与 Linux 容器并行运行。此外,通过在 OCI 容器中嵌入 Wasm 运行时,Docker Desktop 还可以将 Wasm 应用程序打包到 OCI 容器中,从而可以通过 DockerHub 等容器注册中心来共享 Wasm 应用程序。
原文链接:
https://www.infoq.com/news/2023/03/docker-wasm-containers-preview-2/
声明:本文为 InfoQ 翻译,未经许可禁止转载。
彻底告别K8s和Docker Swarm!Ruby On Rails 之父下云后:系统好用又便宜,还清理了几千行代码
微信扫码关注该文公众号作者