名称¶
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
命令仅适用于受信任的环境。不建议在不受信任的镜像上使用此命令。
变量¶
标签的内容可以引用以下变量,这些变量在处理标签时会被替换。
IMAGE 镜像的名称。当执行 podman container runlabel label fedora
时,IMAGE
变量被替换为 fedora
。有效格式为 IMAGE
、$IMAGE
、${IMAGE}
和 =IMAGE
。
NAME 由 --name
选项指定。格式与 IMAGE 属性的格式相同。
PWD 将替换为当前工作目录。
选项¶
--authfile=path¶
认证文件的路径。在 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=path¶
使用 路径 下的证书(*.crt, *.cert, *.key)连接到注册表。(默认值:/etc/containers/certs.d)有关详细信息,请参阅 containers-certs.d(5)。(此选项不适用于远程 Podman 客户端,包括 Mac 和 Windows(不包括 WSL2)机器)
--creds=[username[:password]]¶
用于向镜像仓库进行身份验证的 [username[:password]](如果需要)。如果未提供一个或两个值,则会出现命令行提示,可以输入该值。密码输入时无回显。
请注意,指定的凭据仅用于针对目标注册表进行身份验证。它们不用于镜像或注册表被重写时(请参阅 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
使用设置了固定容器名称的标签重新运行容器。--replace 标志确保首先删除任何现有容器。
$ podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1254c038d892 docker.io/library/busybox:latest echo Hello from r... 26 seconds ago Exited (0) 26 seconds ago test-runlabel
$ podman container runlabel --replace RUN runlabel-test
Hello from runlabel
$ podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
28efd9600d0c docker.io/library/busybox:latest echo Hello from r... 4 seconds ago Exited (0) 4 seconds ago test-runlabel
当标签使用固定名称(例如,--name mycontainer
)并且您希望重复运行它而无需手动删除以前的容器时,此命令很有用。
另请参阅¶
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)首次整理