码头工人
描述
在正在运行的容器中运行命令
用法
$ 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的基本命令。 |