开发者可以通过 DockerHub 和 CRI-O 等 Docker 工具在 WasmEdge 中部署、管理和运行轻量级 WebAssembly 应用程序。
WasmEdge 是由 CNCF (Cloud Native Computing Foundation) 托管的 WebAssembly 运行时,是边缘计算应用程序的执行沙箱。
虽然 WebAssembly 最初是作为浏览器应用程序的运行时而发明的,但其轻量级和高性能的沙箱设计使其成为通用应用程序容器的一个极具吸引力的选择。
如果在 2008 年已经有了 WASM + WASI,那么我们压根无需创始 Docker 这个项目了。 — Docker 联合创始人 Solomon Hykes
与 Docker 相比, WebAssembly 在启动时快一百倍, 占用更小的内存和磁盘空间,并且具有更优定义的安全沙箱。然而,缺点是 WebAssembly 需要自己的语言 SDK 和编译器工具链,使其作为开发者环境比 Docker 更受限制。WebAssembly 越来越多地用于边缘计算场景,通常这些场景中,部署 Docker 比较困难,或是应用程序的性能至关重要。
Docker 的一大优势是其丰富的工具生态系统。我们希望为 WasmEdge 开发者带来类似 Docker 的工具。为了实现这一点,我们为 CRI-O 创建了一个名为 runw 的替代 runner 来加载并运行 WebAssembly 字节码程序,如同他们是 Docker 镜像文件一样。
在 CRI-O 中安装 WebAssembly runner
为了在 CRI-O 中支持 WebAssembly,您只需下载 runw
二进制码发布并将其安装到您的 CRI-O 中。
因为
runw
二进制码已经包括了 WasmEdge,无需单独安装 WasmEdge 或任何其它 WebAssembly VM。
首先,确保你使用的是安装了 LLVM-10 的 Ubuntu 20.04。如果你使用的是不同的平台,请参阅如何为你的操作系统创建 runw
项目文档。
sudo apt install -y llvm-10-dev liblld-10-dev
确保你安装了 cri-o、 crictl、 containernetworking-plugins 和 buildah 或者 docker 。
下一步,下载 runw
binary build
wget https://github.com/second-state/runw/releases/download/0.1.0/runw
现在,你可以安装 runw
进 CRI-O 作为 WebAssembly 的备选方案。
# Get the wasm-pause utility
sudo crictl pull docker.io/beststeve/wasm-pause
# Install runw into cri-o
sudo cp -v runw /usr/lib/cri-o-runc/sbin/runw
sudo chmod +x /usr/lib/cri-o-runc/sbin/runw
sudo sed -i -e 's@default_runtime = "runc"@default_runtime = "runw"@' /etc/crio/crio.conf
s