在 KubeCon NA 2022 大会的云原生Wasm活动日中,Docker 宣布与 CNCF Wasm 运行时项目WasmEdge合作推出Docker+Wasm技术预览。只需一个命令docker compose up
,Docker 开发人员就可以立即构建、分享和运行一个完整的 Wasm 应用程序。
Wasm 最初是作为 Web 浏览器的安全沙盒开发的。近年来,作为 VM 和 Linux 容器(LXC)的一个安全、轻量级、快速、可移植的替代方案,它在服务器端找到了许多应用场景——这一领域最初是由 Docker 开创的。
Second State 提供了一个标准的Docker+Wasm演示应用程序。这是一个数据库驱动的 Web 应用程序,它包含一个用于运行整个 Web 服务(微服务)的 WasmEdge“容器”,以及两个用于运行支持服务的 Linux 容器(一个用于 MySQL 数据库,一个用于为前端 UI 提供静态 HTML 页面的 NGINX)。这三个容器在同一个网络中并行运行,共同组成一个应用程序。微服务用 Rust 编写,并编译成 Wasm。它有一个高性能(非阻塞)的 HTTP 服务器、一个事件处理程序(处理 HTTP 请求的业务逻辑)和一个 MySQL 数据库客户端。整个“容器化”的微服务只有 3MB,而相比之下,数据库和 NGINX 的 Linux 容器则有数百 MB。
图片来源:Docker+Wasm技术预览简介
Docker Compose不仅能将 Wasm 应用程序和容器一样运行,还会将 Rust 源代码构建为 Wasm。开发人员甚至不需要安装 Rust 编译器工具链,因为 Docker 也已将整个构建环境容器化。Docker + Wasm 是一个单独的工具,负责构建和运行 Wasm 应用程序。
随着 Docker 发起了容器革命(导致了云原生时代的到来),Docker在“多运行时”世界中支持 Wasm 的努力变得特别有意义。
Docker+Wasm 的发布非常有意义。我们不再生活在单运行时的世界中,我们有 Linux 容器、Windows 容器和 Wasm 容器。OCI 可以打包它们,@docker 可以构建和运行它们。—— Docker 联合创始人Solomon Hykes
Docker+Wasm 背后的技术主要来自开源社区。例如,Docker 依赖一个名为runwasi的 Containerd shim(最初由微软的DeisLabs创建)来启动 WasmEdge 并执行 Wasm 程序。
开源工作已远远超出了 Docker。例如,Red Hat 团队已经将Wasm运行时支持集成到OCI运行时crrun中。这使得整个Kubernetes栈能够完美支持WasmEdge应用。事实上,在 KubeCon 活动的前几天,Liquid Reply 团队已经演示了使用 WasmEdge 的Podman+Wasm。
KubeCon 活动上还演示了其他 Wasm 应用,包括:AI推理应用、基于Dapr的微服务和流式管道中的数据处理功能。现在,开发人员可以使用 Docker+Wasm 轻松地构建、分享和运行这些应用程序了。
原文链接:
评论