创建和管理清单列表及镜像索引
摘要
podman manifest
命令提供了一组子命令,可用于:
- 创建工作的 Docker 清单列表或 OCI 镜像索引。
子命令
命令 | 手册页 | 描述 |
---|---|---|
add | podman-manifest-add(1) | 将一个镜像或制品添加到清单列表或镜像索引中。 |
annotate | podman-manifest-annotate(1) | 在清单列表或镜像索引中添加和更新关于镜像或制品的信息。 |
create | podman-manifest-create(1) | 创建清单列表或镜像索引。 |
exists | podman-manifest-exists(1) | 检查本地存储中是否存在给定的清单列表。 |
inspect | podman-manifest-inspect(1) | 显示清单列表或镜像索引。 |
push | podman-manifest-push(1) | 将清单列表或镜像索引推送到注册表。 |
remove | podman-manifest-remove(1) | 从清单列表或镜像索引中移除一个镜像。 |
rm | podman-manifest-rm(1) | 从本地存储中移除清单列表或镜像索引。 |
请注意,以上子命令的具体用法和选项可能因 Podman 版本的不同而有所差异。建议查阅与您的 Podman 版本相对应的官方文档以获取最准确的信息。
示例
从 Containerfile 构建多架构清单列表
假设 Containerfile
使用 RUN
指令,主机需要有一种执行非本机二进制文件的方法。配置这超出了本示例的范围。使用 4 个线程并行构建名为 shazam
的多架构清单列表可以这样做:
$ platarch=linux/amd64,linux/ppc64le,linux/arm64,linux/s390x
$ podman build --jobs=4 --platform=$platarch --manifest shazam .
注意: --jobs
参数是可选的。在构建多架构清单列表时,不要使用 podman build
命令的 --tag
(或 -t
)选项。
从单独构建的镜像中组装多架构清单
假设 example.com/example/shazam:$arch
镜像已在其他主机上单独构建并推送到 example.com
注册表。它们可以被组合成一个清单列表,并使用一个简单的循环进行推送:
$ REPO=example.com/example/shazam
$ podman manifest create $REPO:latest
$ for IMGTAG in amd64 s390x ppc64le arm64; do \
podman manifest add $REPO:latest docker://$REPO:$IMGTAG; \
done
$ podman manifest push --all $REPO:latest此外,`--all` 推送选项是必需的,以确保推送所有内容,而不仅仅是本机平台/架构。
### 在推送之前移除和标记清单列表
与仅移除和推送内容相比,移除和推送清单列表时需要特别注意。几乎总是需要使用 `manifest rm` 和 `manifest push --all` 子命令。例如,重命名和推送可以这样进行:
```bash
$ podman tag localhost/shazam example.com/example/shazam
$ podman manifest rm localhost/shazam
$ podman manifest push --all example.com/example/shazam
在这个示例中,我们首先使用 podman tag
命令给清单列表一个新的标签,然后使用 podman manifest rm
移除本地存储中的旧清单列表。最后,使用 podman manifest push --all
推送新的清单列表及其所有关联的镜像到远程注册表。这样确保了推送包含了所有架构的镜像,而不仅仅是本机平台/架构的镜像。
另请参阅
- podman(1): Podman 主命令文档,提供了关于 Podman 的总体描述和常用选项。
- podman-manifest-add(1): 用于向现有的多架构清单列表中添加镜像的文档。
- podman-manifest-annotate(1): 用于给多架构清单列表添加注释的文档。
- podman-manifest-create(1): 用于创建一个新的多架构清单列表的文档。
- podman-manifest-inspect(1): 用于查看多架构清单列表的详细信息的文档。
- podman-manifest-push(1): 用于推送多架构清单列表到远程注册表的文档。
- podman-manifest-remove(1): 用于从多架构清单列表中移除指定镜像的文档。
这些手册页提供了关于如何使用 Podman 来管理多架构清单列表的详细信息和示例。如果你需要了解 Podman 的其他功能或命令,请查阅相应的手册页。