docker exec 命令用于在运行容器中运行命令。
该命令开始使用docker exec
只在容器的主进程(PID 1)运行时运行,并且如果容器重新启动,则不重新启动该命令。
用法
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
选项
符号 | 默认值 | 描述 |
---|---|---|
--detach, -d |
false | 分离模式:在后台运行命令 |
--detach-keys |
覆盖分离容器的键顺序 | |
--env, -e |
设置环境变量 | |
--interactive, -i |
false | 保持STDIN打开即使不附加 |
--privileged |
false | 对给定的命令扩展权限 |
--tty, -t |
false | 分配伪TTY |
--user, -u |
Username 或 UID (格式: <name/uid>[:<group/gid>] ) |
示例
基本例子
在运行容器上运行docker exec
,首先,启动一个容器。
1. 监听事件:
$ docker run --name ubuntu_bash --rm -i -t ubuntu bash
这将创建一个名为ubuntu_bash
的容器并启动一个Bash会话。
接下来,在容器上执行一个命令。
$ docker exec -d ubuntu_bash touch /tmp/execWorks
这将在后台运行的容器ubuntu_bash
中创建一个新文件/tmp/execWorks
。
接下来,在容器上执行交互式bash shell。
$ docker exec -it ubuntu_bash bash
这将在容器ubuntu_bash
中创建一个新的Bash会话。
尝试在暂停的容器上运行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