containerd

    在接下来的部分中,我们会展示如何使用这些脚本。

    使用以下命令在您的系统上安装 containerd。

    将 containerd 配置为使用 作为底层 OCI runtime。 此处需要修改 /etc/containerd/config.toml 文件。

    1. sudo bash -c "containerd config default > /etc/containerd/config.toml"
    2. wget https://raw.githubusercontent.com/second-state/wasmedge-containers-examples/main/containerd/containerd_config.diff
    3. sudo patch -d/ -p0 < containerd_config.diff
    1. sudo systemctl start containerd

    在运行下一步之前,请确保你已经构建并安装好了支持 WasmEdge的 crun二进制文件

    现在,我们可以使用 containerd 运行一个简单的 WebAssembly 程序。 解释了如何编译、打包和将 WebAssembly 程序作为容器镜像发布至 Docker hub 。 在本节中,我们需要先使用 containerd 工具将这个基于 WebAssembly 的容器镜像从 Docker hub 中拉取下来。

    现在,您可以使用 ctr(containerd cli 工具)运行此示例。

    1. sudo ctr run --rm --runc-binary crun --runtime io.containerd.runc.v2 --label module.wasm.image/variant=compat docker.io/hydai/wasm-wasi-example:with-wasm-annotation wasm-example /wasi_example_main.wasm 50000000
    1. Random number: -1678124602
    2. Random bytes: [12, 222, 246, 184, 139, 182, 97, 3, 74, 155, 107, 243, 20, 164, 175, 250, 60, 9, 98, 25, 244, 92, 224, 233, 221, 196, 112, 97, 151, 155, 19, 204, 54, 136, 171, 93, 204, 129, 177, 163, 187, 52, 33, 32, 63, 104, 128, 20, 204, 60, 40, 183, 236, 220, 130, 41, 74, 181, 103, 178, 43, 231, 92, 211, 219, 47, 223, 137, 70, 70, 132, 96, 208, 126, 142, 0, 133, 166, 112, 63, 126, 164, 122, 49, 94, 80, 26, 110, 124, 114, 108, 90, 62, 250, 195, 19, 189, 203, 175, 189, 236, 112, 203, 230, 104, 130, 150, 39, 113, 240, 17, 252, 115, 42, 12, 185, 62, 145, 161, 3, 37, 161, 195, 138, 232, 39, 235, 222]
    3. Printed from wasi: This is from a main function
    4. The env vars are as follows.
    5. The args are as follows.
    6. /wasi_example_main.wasm
    7. File content is This is in a file

    接下来,你可尝试在 Kubernetes中运行这个应用!

    最后,我们可以在 containerd 中运行一个简单的基于 WebAssembly 的 HTTP 微服务。 解释了如何编译、打包和将 WebAssembly 程序作为容器镜像发布至 Docker hub 。 在本节中,我们需要先使用 containerd 工具将这个基于 WebAssembly 的容器镜像从 Docker hub 中拉取下来。

    现在,您可以使用 ctr(containerd cli 工具)运行该示例。(请注意,我们需要加上 --net-host 参数来运行容器,以便可以从外部访问 WasmEdge 容器内的 HTTP server。)

    1. sudo ctr run --rm --net-host --runc-binary crun --runtime io.containerd.runc.v2 --label module.wasm.image/variant=compat docker.io/avengermojo/http_server:with-wasm-annotation http-server-example /http_server.wasm
    1. new connection at 1234
    2. # Test the HTTP service at that IP address

    接下来,你可尝试在 Kubernetes 中运行这个应用!