首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

docker exec

描述

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

使用

代码语言:javascript
复制
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

用户名或UID(格式:<名称| uid>:<组| gid>)

父命令

命令

描述

docker

Docker CLI的基本命令。

扩展描述

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"会。

实例

在正在运行的容器上运行docker exec

首先,启动一个容器。

代码语言:javascript
复制
$ docker run --name ubuntu_bash --rm -i -t ubuntu bash

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

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

代码语言:javascript
复制
$ docker exec -d ubuntu_bash touch /tmp/execWorks

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

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

代码语言:javascript
复制
$ docker exec -it ubuntu_bash bash

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

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

代码语言:javascript
复制
$ docker exec -it -e VAR=1 ubuntu_bash bash

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

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

如果容器暂停,那么docker exec命令将失败并出现错误:

代码语言:javascript
复制
$ 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

扫码关注腾讯云开发者

领取腾讯云代金券