# docker \[container] exec

`docker container exec` 命令在正在运行的容器中运行一个新命令。

使用 `docker container exec` 启动的命令仅在容器的主进程（`PID 1`）正在运行时才会运行，且如果容器被重启，该命令不会重新启动。

命令将在容器的默认工作目录中运行。如果该命令是一个 GUI 程序，它将无法在容器中运行。

<table data-header-hidden><thead><tr><th width="205.34375">选项</th><th>描述</th></tr></thead><tbody><tr><td></td><td></td></tr><tr><td><code>-d, --detach</code></td><td>分离模式：在后台运行命令</td></tr><tr><td><code>--detach-keys</code></td><td>覆盖用于分离容器的键序列</td></tr><tr><td><code>-e, --env</code></td><td>设置环境变量</td></tr><tr><td><code>--env-file</code></td><td>读取环境变量文件</td></tr><tr><td><code>-i, --interactive</code></td><td>即使没有附加也保持 STDIN 开启</td></tr><tr><td><code>--privileged</code></td><td>为命令授予扩展特权</td></tr><tr><td><code>-t, --tty</code></td><td>分配一个伪终端 (pseudo-TTY)</td></tr><tr><td><code>-u, --user</code></td><td>用户名或 UID (格式: `&#x3C;name</td></tr><tr><td><code>-w, --workdir</code></td><td>容器内的工作目录</td></tr></tbody></table>

## 示例

#### 在运行中的容器内运行交互式 shell (Run an interactive shell)

要在名为 `my-container` 的容器中启动一个交互式 bash shell：

```bash
docker exec -it my-container bash
```

#### 在后台运行命令 (--detach)

在名为 `my-container` 的容器后台运行一个命令：

```bash
docker exec -d my-container touch /tmp/exec_test
```

#### 设置环境变量 (--env)

在执行命令时临时设置环境变量：

```bash
docker exec -it -e MY_VAR=my_value my-container env
```

以特定用户身份运行 (--user)

默认情况下，`exec` 命令以容器默认用户身份运行。可以使用 `-u` 或 `--user` 标志以不同用户身份运行：

```bash
docker exec -u root my-container whoami
```
