跳到主要内容

在正在运行的容器中执行命令

摘要

podman exec [选项] 容器 [命令 [参数 ...]]

podman container exec [选项] 容器 [命令 [参数 ...]]

说明

podman exec 在正在运行的容器中执行一个命令。

选项

--detach, -d

启动 exec 会话,但不附加到它。命令在后台运行,并且当 exec 会话完成时,它会自动被移除。podman exec 命令在启动后会话后立即打印 exec 会话的 ID 并退出。

@@option detach-keys

(此选项的详细说明待补充)

@@option env

(此选项的详细说明待补充)

@@option env-file

(此选项的详细说明待补充)

@@option interactive

(此选项的详细说明待补充)

@@option latest

(此选项的详细说明待补充)

@@option preserve-fd

(此选项的详细说明待补充)

@@option preserve-fds

(此选项的详细说明待补充)

@@option privileged

(此选项的详细说明待补充)

@@option tty

(此选项的详细说明待补充)

@@option user

(此选项的详细说明待补充)

@@option workdir

(此选项的详细说明待补充)

(注意:上述“@@option”标记的部分是占位符,表示待补充的选项详细说明。在实际文档中,这些部分应该被具体的选项描述所替代。)

退出状态

podman exec 的退出状态码提供了关于容器内命令为何无法运行或为何退出的信息。当 podman exec 以非零状态码退出时,状态码遵循 chroot 标准,如下:

125 错误来自 Podman 本身

podman exec --foo ctrID /bin/sh; echo $?
Error: unknown flag: --foo
125

126 无法调用 _容器内的命令_

podman exec ctrID /etc; echo $?
Error: container_linux.go:346: starting container process caused "exec: \"/etc\": permission denied": OCI runtime error
126

127 找不到 _容器内的命令_

podman exec ctrID foo; echo $?
Error: container_linux.go:346: starting container process caused "exec: \"foo\": executable file not found in $PATH": OCI runtime error
127

退出状态码_容器内的命令_ 的退出状态码

podman exec ctrID /bin/sh -c 'exit 3'; echo $?
3

podman exec 成功执行命令时,它将返回容器内命令的退出状态码。如果命令成功执行,则退出状态码通常为 0。如果命令失败或遇到错误,则退出状态码将是非零的,具体取决于命令执行时的错误情况。

示例

在选定的容器中执行命令,并为其分配 stdin 和 tty:

podman exec -it ctrID ls

在选定的容器中执行命令,使用覆盖的工作目录,并为其分配 stdin 和 tty:

podman exec -it -w /tmp myCtr pwd

以指定用户在选定的容器中执行命令:

podman exec --user root ctrID ls

参见

podman(1), podman-run(1)

历史

2017年12月,最初由Brent Baude整理