跳到主要内容

根据容器镜像标签执行命令

SYNOPSIS

podman container runlabel [选项] label image [参数...]

描述

podman container runlabel 读取指定的label,并根据image中的内容在主机上执行命令。如果标签不存在,Podman将退出并报错。额外的参数会被追加到命令末尾。

过去,容器镜像主要描述内容(如层)以及容器运行时(如crun(1)或runc(1)) 如何执行容器。例如,镜像可能设置环境和命令。然而,容器镜像本身并不能直接指定容器引擎(如Podman)如何执行它。例如,镜像配置不包含有关日志驱动、命名空间或运行所需的权限等信息。

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

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

变量

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

IMAGE 镜像的名称。例如,执行podman container runlabel label fedora时,IMAGE变量会被替换为fedora。有效的格式包括IMAGE$IMAGE${IMAGE}=IMAGE

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

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

选项

@@option authfile

@@option cert-dir

@@option creds

--display

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

--help, -h

显示帮助信息

--name, -n=name

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

--quiet, -q

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

--replace

如果当前名称下存在一个容器,那么它会停止、删除该容器,并从指定的镜像创建一个新的容器。

示例

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

$ podman container run --replace label run foobar

使用附加参数执行名为“foobar”的镜像的install标签。

$ podman container run --replace label install foobar apples oranges

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

$ podman container run --replace --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)编译。

希望以上翻译对您有所帮助!