上周五,Docker Desktop 发布了 4.15 新版本。在这个版本中,Docker Desktop 正式集成了 WasmEdge 的 containerd shim, 并且 Docker + Wasm 也从 tech preview 进入到了 beta 阶段。这意味着,1000 万 Docker Desktop 的用户都安装了 WasmEdge,Docker 开发者可以使用已经熟悉的工具链来开发 WasmEdge 应用。
此外,上周 WasmEdge 上了 GitHub Tending。感谢各位开发者对 WasmEdge 的喜爱!
检查 WasmEdge 的源码:https://github.com/WasmEdge/WasmEdge
我们提供了一个基于数据库的完整微服务应用示例,如果你想要快速体验 Docker + Wasm,从这个 repo 开始,是最方便的。
首先,git clone 到 microservice-rust-mysql 本地,并打开这个示例。
$ git clone https://github.com/second-state/microservice-rust-mysql.git
$ cd microservice-rust-mysql
接下来,打开 Docker Desktop,确认 Docker Desktop 正在运行。你可以从这里下载最新的 Docker Desktop。
下载链接:https://docs.docker.com/desktop/release-notes/
然后,使用 docker compose up
构建和运行这个微服务 demo。
docker compose up
输入这个命令行后,docker 会按照 Dokcerfile
构建镜像,这其中有两个 Linux 容器镜像,分别是 Nginx 和 MariaDB,一个是 Wasm 镜像,运行着基于 Rust 的微服务。
然后 docker 会按照 docker-compose.yml
来启动容器,运行构建好的镜像。
运行结束后,在浏览器打开 http://localhost:8090/
,就可以看到这个微服务的 web UI。如 UI 所示,这个微服务将前端的订单信息通过基于 Wasm 的微服务添加到数据库中。
我们再回到 Docker Desktop 就可以看到,总共有三个容器在运行,其中,有一个被标记了 Wasm32,意味着这是一个 wasm 容器。
有三个镜像,其中 Wasm 镜像只有 3MB,而基于 Linux 的 nignx 镜像有12 MB,MariaDB 则是100多 MB。 Wasm 的轻量级由此可见一斑。
Wasm 不仅仅是占用空间小,Wasm 还是高性能的,启动时间在毫秒以内,而 Linux 容器启动则需要几百毫秒。
值得一提的是,当前亚马逊正在北美举办的AWSre:Invent六万大会上,AWS 做了其最重要的软件产品发布:lambda serverless 函数的启动时间从6秒降到了600 毫秒。而基于 WasmEdge 的微服务与 serverless 函数的启动时间可以轻松在毫秒以内。正如 Docker 创始人所说,服务端的 WebAssembly 是云计算的未来。
本篇文章介绍了如何使用 Docker Desktop 和 Docker compose 肩并肩运行Linux容器和 Wasm 容器,下一篇文章,我们将介绍如何配置 Dockerfile 与 docker-compose.yml,从 0 开始,使用 Docker 工具链构建自己的 Wasm 应用。
相关阅读:
Docker 与 WasmEdge 合作,发布 WebAssembly 支持