1 个不稳定版本

0.4.0 2024 年 3 月 20 日

#360WebAssembly


用于 containerd-shim-wasm

Apache-2.0

18KB
318

OCI Tar Builder

这是一个可用于构建 OCI tar 存档的库。它被 wasi-demo-app crate 用于构建用于运行演示应用的 OCI tar 存档。当前实现支持将 wasi-demo-app wasm 模块封装为 OCI tar。

贡献

我们欢迎对此做出贡献,以使其更加健壮、有用,并总体上更好。

库使用

该库尚未发布到 crates.io,因此您需要将以下内容添加到您的 Cargo.toml

[dependencies]
oci-tar-builder = { git = "https://github.com/containerd/runwasi.git" }

有关示例,请参阅 wasi-demo-app 构建脚本

可执行程序使用

有一个实验性的可执行程序,它使用该库并将 wasm 模块打包成具有 wasm 层的 OCI 镜像。有关更多信息,请参阅 containerd 中的 OCI WASM

使用工具(如 regctl)生成包并将其导入注册表

cargo run --bin oci-tar-builder -- --name wasi-demo-oci --repo ghcr.io/containerd/runwasi --tag latest --module ./target/wasm32-wasi/debug/wasi-demo-app.wasm -o ./dist/img-oci.tar
regctl image import localhost:5000/wasi-demo-oci:latest ./dist/img-oci.tar        

查看创建的清单,注意层的媒体类型为 application/vnd.bytecodealliance.wasm.component.layer.v0+wasm,这些可能会更改。

Name:                                localhost:5000/wasi-demo-oci:latest
MediaType:                           application/vnd.oci.image.manifest.v1+json
Digest:                              sha256:6c48b431d29a1ea1ece13fa50e9f33e4d164e07f6a501dbed668aed947002c5c
Annotations:
  io.containerd.image.name:          ghcr.io/containerd/runwasi/wasi-demo-oci:latest
  org.opencontainers.image.ref.name: latest
Total Size:                          2.590MB

Config:
  Digest:                            sha256:beb7483682ae4ec45d02cd7cee8ee733f8dc610cb7e91070dc8f10567365bdd7
  MediaType:                         application/vnd.oci.image.config.v1+json
  Size:                              138B

Layers:

  Digest:                            sha256:656e978ae0c37156a6abe06052a588e5c700346650765859981ebd2089cffd42
  MediaType:                         application/vnd.bytecodealliance.wasm.component.layer.v0+wasm
  Size:                              2.590MB

规范

有关OCI tar格式的更多信息,请参阅OCI镜像规范

为了与Docker兼容,因为Docker目前不支持OCI格式,这还包括一个位于tar根目录下的 manifest.json 文件,该文件以Docker可以导入的方式描述了镜像。

依赖关系

~8–18MB
~258K SLoC