作用
该docker exec命令在正在运行的容器中运行一个新命令。
语法
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS说明
--detach , -d | 分离模式:在后台运行命令 |
---|---|
--detach-keys | 覆盖用于分离容器的键序列 |
--env ,-e | ** API 1.25+** 设置环境变量 |
--env-file | ** API 1.25+** 读入环境变量文件 |
--interactive , -i | 即使未连接,也要保持 STDIN 打开 |
--privileged | 为命令授予扩展权限 |
--tty , -t | 分配一个伪 TTY |
--user , -u | 用户名或 UID(格式:<name |
--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
在容器上执行交互式shell。
$ docker exec -it ubuntu_bash bash
这将在容器中创建一个新的 Bash 会话ubuntu_bash
。
接下来,在当前 bash 会话中设置一个环境变量。
$ docker exec -it -e VAR=1 ubuntu_bash bash
这将在容器中创建一个新的 Bash 会话,并将ubuntu_bash
环境变量$VAR
设置为“1”。请注意,此环境变量仅在当前 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