NAME

Podman-exec-在运行的容器中执行命令

SYNOPSIS

podman exec [options] container [command [arg ...]]

podman container exec [options] container [command [arg ...]]

DESCRIPTION

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

OPTIONS

--detach-d

启动EXEC会话,但不要连接到它。该命令在后台运行,完成后会自动删除EXEC会话。这个 podman exec 命令打印EXEC会话的ID,并在启动后立即退出。

--detach-keys = 序列

指定拆卸容器的按键顺序。格式为单字符 [a-Z] or one or more ctrl-<value> characters where <value> is one of: a-z, @, ^, [, , or _ 。指定“”将禁用此功能。缺省值为 ctrl-p,ctrl-q

也可以在中设置此选项 containers.conf (5)归档。

--env-e = env

设置环境变量。

该选项允许在容器内启动进程可用的任意环境变量。如果指定的环境变量没有值,则Podman会检查主机环境中的值,并仅在主机上设置了该变量时才设置该变量。作为特例,如果环境变量以 * 则Podman将在主机环境中搜索以前缀开头的变量,并将这些变量添加到容器中。

--env-file = file

读入以行分隔的环境变量文件。

--interactive-i

当设置为时 true ,使stdin保持打开状态,即使未连接。默认为 错误

--latest-l

使用上次创建的容器,而不是提供容器名称或ID。注意:最后启动的容器可以来自主机上Podman的其他用户。(此选项不适用于远程Podman客户端,包括Mac和Windows(不包括WSL2)计算机)

--preserve-fd = FD1[,FD2,...]

将逗号分隔列表中指定的其他文件描述符向下传递给进程。它可以指定多次。仅crun OCI运行时支持此选项。将此选项与其他OCI运行时一起使用可能存在安全风险。

(此选项不适用于远程Podman客户端,包括Mac和Windows(不包括WSL2)计算机)

--preserve-fds = N

向下传递给进程N的附加文件描述符(除了0、1、2之外)。FD总数为3+N(此选项不适用于远程Podman客户端,包括Mac和Windows(不包括WSL2)计算机)

--privileged

将扩展权限授予此容器。默认为 错误

默认情况下,Podman容器没有特权( =false ),并且例如不能修改操作系统的某些部分。这是因为默认情况下,容器仅被允许对设备进行有限访问。除虚拟控制台外,授权的容器对设备的访问权限与启动该容器的用户相同 (/dev/tty\d+) 在system d模式下运行时( --systemd=always )。

特权容器关闭将容器与主机隔离的安全功能。删除的功能、有限的设备、只读装载点、Apparmor/SELinux分离和Seccomp筛选器都被禁用。由于禁用的安全功能,几乎不应该设置特权区域,因为容器很容易突破限制。

在用户命名空间中运行的容器(例如,无根容器)不能具有比启动它们的用户更多的特权。

--tty-t

分配一个伪TTY。默认为 错误

当设置为时 true ,Podman分配一个伪tty并附加到容器的标准输入。例如,这可以用来运行一次性交互Shell。

NOTE :--tty标志防止重定向标准输出。它结合了STDOUT和STDERR,可以插入控制字符,还可以悬挂管道。仅当在终端中以交互方式运行时才使用此选项。向Podman提供输入时,请使用-I Only,Not-It。

--user-u = user[:group]

设置所使用的用户名或UID,还可以设置指定命令的组名或GID。两者都有 usergroup 可以是符号的也可以是数字的。

如果没有此参数,该命令将以容器映像中指定的用户身份运行。除非被 USER 命令,或者通过传递给该选项的值,则该用户通常默认为根用户。

当未使用用户命名空间时,容器内和主机上使用的UID和GID匹配。但是,当使用用户命名空间时,容器中的UID和GID可能对应于主机上的另一个UID和GID。例如,在无根容器中,总是使用用户名称空间,默认情况下,容器中的根对应于调用Podman的用户的UID和GID。

--workdir-w = dir

容器内的工作目录。

在容器中运行二进制文件的默认工作目录是根目录( / )。图像开发人员可以使用WORKDIR指令设置不同的缺省值。操作员可以通过使用 -w 选项。

退出状态

的退出代码 podman exec 提供有关容器中的命令无法运行或退出的原因的信息。什么时候 podman exec 以非零代码退出,则退出代码跟在 chroot 标准,见下文:

125 错误出在Podman本身

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

126 包含的_ command_ 无法调用

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

127 包含的_ command_ 找不到

$ 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

退出代码 包含的_ command_ 退出代码

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

EXAMPLES

在选定容器中执行命令,分配标准输入和TTY:

$ podman exec -it ctrID ls

在所选容器中使用被覆盖的工作目录执行命令,并分配标准输入和tty:

$ podman exec -it -w /tmp myCtr pwd

在所选容器中以指定用户身份执行命令:

$ podman exec --user root ctrID ls

另请参阅

[podman(1)] , [podman-run(1)]

HISTORY

2017年12月,最初由Brent Baudebbaude@redhat.com汇编