码头工人

描述

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

用法

$ docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

扩展说明

docker exec命令在正在运行的容器中运行新命令。

使用docker exec容器启动的命令仅在容器的主进程(PID 1)正在运行时运行,如果重新启动容器,则该命令不会重新启动。

COMMAND将在容器的默认目录中运行。如果基础映像在其Dockerfile中具有使用WORKDIR指令指定的自定义目录,则将使用该目录。

COMMAND应该是可执行文件,链式命令或带引号的命令将不起作用。示例:docker exec -ti my_container "echo a && echo b"将不起作用,但docker exec -ti my_container sh -c "echo a && echo b"会起作用。

有关此命令的示例用法,请参阅下面的示例部分

选项

名称,简写 默认 描述
--detach-d 分离模式:在后台运行命令
--detach-keys 覆盖分离容器的键序列
--env-e API 1.25+
设置环境变量
--env-file API 1.25+
读取环境变量文件
--interactive-i 即使未连接STDIN,也应使其保持打开状态
--privileged 赋予命令扩展权限
--tty-t 分配伪TTY
--user-u 用户名或UID(格式:<名称| uid> [:<组| gid>])
--workdir-w API 1.35+
容器内的工作目录

例子

运行docker exec运行的容器上

首先,启动一个容器。

$ docker run --name ubuntu_bash --rm -i -t ubuntu bash

这将创建一个名为的容器ubuntu_bash并启动Bash会话。

接下来,在容器上执行命令。

$ docker exec -d ubuntu_bash touch /tmp/execWorks

这将在后台/tmp/execWorks在正在运行的容器内 创建一个新文件ubuntu_bash

接下来,bash在容器上执行一个交互式外壳。

$ docker exec -it ubuntu_bash bash

这将在容器中创建一个新的Bash会话ubuntu_bash

接下来,在当前bash会话中设置环境变量。

$ docker exec -it -e VAR=1 ubuntu_bash bash

这将在ubuntu_bash环境变量$VAR设置为“ 1”的容器中创建一个新的Bash会话。请注意,此环境变量仅在当前的Bash会话上有效。

默认情况下,docker exec命令在创建容器时在相同的工作目录中运行。

$ docker exec -it ubuntu_bash pwd
/

您可以选择要执行命令的工作目录

$ docker exec -it -w /root ubuntu_bash pwd
/root

尝试docker exec在暂停的容器上运行

如果容器已暂停,则docker exec命令将失败并显示错误:

$ docker pause test

test

$ docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
1ae3b36715d2        ubuntu:latest       "bash"              17 seconds ago      Up 16 seconds (Paused)                       test

$ docker exec test ls

FATA[0000] Error response from daemon: Container test is paused, unpause the container before exec

$ echo $?
1

上级命令

命令 描述
码头工人 Docker CLI的基本命令。