名称

podman-container-runlabel - 按照容器镜像标签的描述执行命令

语法

podman container runlabel [选项] 标签 镜像 [参数…]

描述

podman container runlabel 读取指定的 标签镜像 并将其作为命令在主机上执行。如果标签不存在,Podman 会退出并显示错误。附加参数会追加到命令中。

从历史上看,容器镜像描述了内容(例如层)以及容器运行时(例如 crun(1) 或 runc(1))如何执行容器。例如,镜像可能在它的配置中设置环境和命令。但是,容器镜像不能直接指定容器引擎(如 Podman)如何执行它。例如,镜像配置不包含有关日志驱动程序、命名空间或它需要正确运行的哪些功能的信息。

podman container runlabel 以一种简单而有效的方式解决了容器镜像的局限性。Podman 读取标签的内容,并将其解释为在主机上执行的命令。这样,镜像就可以精确地描述 Podman 如何执行它。例如,一个内容为 /usr/bin/podman run -d --pid=host --privileged \${IMAGE} 的标签指示镜像在使用主机 PID 命名空间的独立、特权容器中执行。这将容器镜像的自描述从“什么”提升到“如何”。

请注意,runlabel 命令仅适用于受信任的环境。不建议在不受信任的镜像上使用此命令。

变量

标签的内容可以引用以下变量,这些变量在处理标签时会被替换。

镜像 镜像的名称。在执行 podman container runlabel 标签 fedora 时,镜像 变量将被替换为 fedora。有效格式为 镜像$镜像${镜像}=镜像

名称--name 选项指定。格式与 IMAGE 属性相同。

PWD 将被替换为当前工作目录。

选项

--authfile=路径

身份验证文件的路径。在 Linux 上默认为 ${XDG_RUNTIME_DIR}/containers/auth.json,在 Windows/macOS 上默认为 $HOME/.config/containers/auth.json。该文件由 podman login 创建。如果在那里找不到授权状态,则会检查 $HOME/.docker/config.json,该状态由 docker login 设置。

注意:还可以通过设置 REGISTRY_AUTH_FILE 环境变量来覆盖身份验证文件的默认路径。可以使用 export REGISTRY_AUTH_FILE=路径 来完成此操作。

--cert-dir=路径

使用 路径 (*.crt, *.cert, *.key) 中的证书连接到注册表。(默认:/etc/containers/certs.d)有关详细信息,请参阅 containers-certs.d(5)。(此选项在远程 Podman 客户端不可用,包括 Mac 和 Windows(不包括 WSL2)机器)

--creds=[用户名[:密码]]

用于对注册表进行身份验证的 [用户名[:密码]],如果需要。如果一个或两个值没有提供,则会显示命令行提示,并且可以输入该值。密码在输入时不会显示。

请注意,指定的凭据仅用于对目标注册表进行身份验证。它们不会用于镜像或注册表被重写时(请参阅 containers-registries.conf(5));要对这些进行身份验证,请考虑使用 containers-auth.json(5) 文件。

--display

显示镜像的标签值,该镜像已填充其环境变量。如果指定了 --display,则不会执行 runlabel 命令。

--help, -h

打印使用说明

--name, -n=名称

使用此名称为容器创建内容。如果未指定,则名称默认为镜像的名称。

--quiet, -q

在拉取镜像时抑制输出信息

--replace

如果存在具有当前名称的容器,则会停止、删除该容器,并从该镜像创建一个新的容器。

--tls-verify

在联系注册表时要求 HTTPS 并验证证书(默认:true)。如果明确设置为 true,则使用 TLS 验证。如果设置为 false,则不使用 TLS 验证。如果未指定,则使用 TLS 验证,除非目标注册表在 containers-registries.conf(5) 中列为不安全的注册表

示例

执行名为 foobar 的镜像的 run 标签。

$ podman container runlabel run foobar

执行名为 foobar 的镜像的 install 标签,并带有其他参数。

$ podman container runlabel install foobar apples oranges

显示镜像 foobar 的 run 标签的内容。

$ podman container runlabel --display run foobar

另请参阅

podman(1), crun(1), runc(8), containers-certs.d(5), containers-auth.json(5), containers-registries.conf(5)

历史

2021 年 8 月,Valentin Rothberg(rothberg at redhat dot com)改进

2018 年 9 月,最初由 Brent Baude(bbaude at redhat dot com)编写