名称

podman-manifest - 创建和操作清单列表和镜像索引

概要

podman manifest 子命令

描述

命令 podman manifest 提供了用于执行以下操作的子命令:

* Create a working Docker manifest list or OCI image index.

子命令

命令

手册页

描述

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)

从本地存储中移除清单列表或镜像索引。

示例

从 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

注意: add 指令的参数顺序是 <manifest> 然后是 <image>。此外,需要使用 --all 推送选项来确保推送所有内容,而不仅仅是本地平台/架构。

在推送之前移除和标记清单列表

移除和推送清单列表时,需要格外小心,与推送内容不同。您几乎总是需要使用 manifest rmmanifest push --all 子命令。例如,可以使用以下方法执行重命名和推送操作。

    $ podman tag localhost/shazam example.com/example/shazam
    $ podman manifest rm localhost/shazam
    $ podman manifest push --all example.com/example/shazam

参见

podman(1), podman-manifest-add(1), podman-manifest-annotate(1), podman-manifest-create(1), podman-manifest-inspect(1), podman-manifest-push(1), podman-manifest-remove(1)