跳到主要内容

为镜像创建签名

概要

podman image sign [options] image [image ...]

描述

podman image sign 命令用于为从仓库中拉取的一个或多个本地镜像创建本地签名。签名将被写入到由 $HOME/.config/containers/registries.d(如果存在)或 /etc/containers/registries.d(除非在编译时覆盖)中的仓库配置文件派生的目录中。更多信息请参见 containers-registries.d(5)。默认情况下,对于 root 用户,签名将写入 /var/lib/containers/sigstore;对于非 root 用户,签名将写入 $HOME/.local/share/containers/sigstore

选项

--all, -a

为多架构镜像的所有清单创建签名(默认为 false)。

--authfile

指定身份验证文件的路径(未在此命令的示例中使用)。

--cert-dir

指定证书目录的路径(未在此命令的示例中使用)。

--directory, -d=dir

将签名存储在指定的目录中。默认值:/var/lib/containers/sigstore

--help, -h

打印用法说明。

--sign-by=identity

覆盖签名的默认身份。

示例

使用用户的密钥环为 busybox 镜像签名,并将签名以 foo@bar.com 的身份保存在 /tmp/signatures/ 目录中:

$ sudo podman image sign --sign-by foo@bar.com --directory /tmp/signatures docker://privateregistry.example.com/foobar

使用指定的身份验证文件 /tmp/foobar.json,并以 foo@bar.com 的身份为 busybox 镜像签名,签名保存在 /tmp/signatures/ 目录中:

$ sudo podman image sign --authfile=/tmp/foobar.json --sign-by foo@bar.com --directory /tmp/signatures docker://privateregistry.example.com/foobar

相关配置

签名的写入(和读取)位置由位于 /etc/containers/registries.d/(对于 root 用户)或 $HOME/.config/containers/registries.d(对于非 root 用户)的 YAML 格式配置文件定义。在签名镜像时,Podman 使用这些配置文件来确定基于原始仓库名称的签名写入位置,或使用默认的存储值,除非使用 --directory 选项进行覆盖。例如,考虑以下配置文件:

docker:
privateregistry.example.com:
sigstore: file:///var/lib/containers/sigstore

在签名以 'privateregistry.example.com' 仓库名称开头的镜像时,签名将被写入 /var/lib/containers/sigstore/privateregistry.example.com 的子目录中。使用 'sigstore' 还意味着在执行与拉取相关的操作时,签名将从同一位置读取。

另请参阅

containers-certs.d(5), containers-registries.d(5)

历史

2018 年 11 月,由 Qi Wang 首次编写。