一个简单的 WASI 例子

    首先,请按照这些简单的说明来。

    1. cargo build --target wasm32-wasi --release

    wasm 字节码应用程序位于 target/wasm32-wasi/release/wasi_example_main.wasm 文件中。你现在可以将其发布并用作容器镜像。

    1. FROM scratch
    2. 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。

    1. export GOPATH=`pwd`
    2. git clone https://github.com/containers/buildah ./src/github.com/containers/buildah
    3. cd ./src/github.com/containers/buildah
    4. PATH=/usr/lib/go-1.16/bin:$PATH make
    5. cp bin/buildah /usr/bin/buildah

    创建和发布具备 buildah 的容器镜像

    target/wasm32-wasi/release/ 文件夹下,执行下列指令。

    好了! 现在你可以尝试在 或 Kubernetes 上运行它了!