一个简单的 WASI 例子
首先,请按照这些简单的说明来。
cargo build --target wasm32-wasi --release
wasm 字节码应用程序位于 target/wasm32-wasi/release/wasi_example_main.wasm
文件中。你现在可以将其发布并用作容器镜像。
FROM scratch
CMD ["/wasi_example_main.wasm"]
请注意,添加自定义注释仍然是 buildah 中的新功能。
crun
容器运行时可以启动上述基于 WebAssembly 的容器镜像。但它需要容器镜像上的 module.wasm.image/variant=compat
注释来表明它是一个没有客人操作系统(安装在虚拟机上的系统)的 WebAssembly 应用程序。你可以在官方 crun repo 中找到详细信息。
要在容器镜像中添加 module.wasm.image/variant=compat
注释,你需要最新的 。 目前,Docker 不支持此功能。请按照 buildah 的安装说明 构建最新的 buildah 二进制文件。
然后,按照下列步骤在 Ubuntu 上编译和安装 buildah。
export GOPATH=`pwd`
git clone https://github.com/containers/buildah ./src/github.com/containers/buildah
cd ./src/github.com/containers/buildah
PATH=/usr/lib/go-1.16/bin:$PATH make
cp bin/buildah /usr/bin/buildah
创建和发布具备 buildah 的容器镜像
在 target/wasm32-wasi/release/
文件夹下,执行下列指令。
好了! 现在你可以尝试在 或 Kubernetes 上运行它了!