docker exec
是 Docker 命令行工具中的一个重要指令,用于在 正在运行的容器内部 执行指定的命令。以下是详细解析:
docker exec [OPTIONS] 容器名称或ID 命令 [参数...]
进入容器执行命令
无需进入容器内部,即可直接执行一次性命令(如查看文件、启动服务等)。
docker exec my_container ls /app # 查看容器内的 /app 目录内容
交互式操作容器
通过 -it
参数启动一个交互式终端(如 Bash):
docker exec -it my_container /bin/bash # 进入容器的 Bash Shell
选项 | 说明 |
---|---|
-i (--interactive ) |
保持标准输入(STDIN)打开,允许交互 |
-t (--tty ) |
分配伪终端(TTY),使命令行格式化输出 |
-d (--detach ) |
在后台运行命令(不占用当前终端) |
-u (--user ) |
以指定用户身份执行命令(如 -u root ) |
-e |
设置环境变量(如 -e VAR=value ) |
调试容器
快速检查容器内的进程或日志:
docker exec -it nginx_container ps aux
docker exec nginx_container tail -f /var/log/nginx/error.log
修改配置
直接编辑容器内的配置文件(需容器内有 vi
/nano
):
docker exec -it mysql_container vi /etc/mysql/my.cnf
执行脚本
运行容器内的某个脚本:
docker exec my_python_container python /scripts/backup.py
docker run
的区别docker run
:创建并启动一个新容器。docker exec
:在 已运行 的容器内执行额外命令(不创建新容器)。容器必须处于运行状态
若容器已停止,需先通过 docker start
启动它。
命令需存在于容器内
如果容器内没有 /bin/bash
,尝试使用 /bin/sh
或其他可用 Shell。
避免后台服务冲突
在容器内启动长期运行的服务(如 nginx
)可能导致与容器主进程冲突,建议通过 Dockerfile 或 docker run
定义主服务。
通过灵活使用 docker exec
,可以高效调试和管理容器化应用,而无需重建或重新部署容器。