首页/云/Docker 容器速查/docker exec 进入容器执行命令
基础命令50 条

docker exec 进入容器执行命令

在运行中的容器里新开一个进程执行命令,用它开 shell 排查、跑检测命令、看进程;不会替换容器主进程。

Docker 容器速查云更新于 2026-10-13

docker exec 是什么

docker exec 在运行中的容器里新开一个进程执行命令,用它开 shell 排查、跑检测命令、看进程与配置文件。它不会替换容器主进程,也不会影响容器已经固化的启动配置;退出 exec 会话,容器照常运行。

基本信息

语法docker exec [选项] CONTAINER COMMAND [ARG...]
前提容器必须处于运行状态,已停止的容器要先 start
常用选项-it 交互终端 -u 指定用户 -w 指定工作目录 -e 传环境变量 -d 后台执行
适用平台所有运行 Docker Engine 的 Linux / macOS / Windows 环境

典型使用场景

  • 进容器看现场:确认配置文件是否按预期挂载进来、进程是否在监听、域名解析是否正常
  • 临时执行检测命令:在容器网络命名空间里跑 curl、nc、dig,判断是应用问题还是网络问题
  • 核对应用视角:用应用自己的用户身份执行命令,验证权限和路径是否一致
  • 查看进程与句柄:ps 看主进程与子进程,必要时看连接与打开的文件
  • 一次性取数据:导出配置、统计条目数、跑一条数据库查询后立即退出

常用示例

常用示例
docker exec -it web sh                  # 开一个交互 shell
docker exec web nginx -t                # 不改容器校验配置语法
docker exec -u www-data web id          # 用应用用户身份执行
docker exec web cat /etc/resolv.conf    # 看容器实际拿到的 DNS 配置
docker exec -w /app web ls -l           # 指定工作目录执行命令

选项读法

选项作用注意
-it交互终端容器里没有 bash 时改用 sh,报没有终端说明没加 -t
-u以指定用户执行默认常是 root,核对应用权限时必加
-d后台执行适合跑长任务,输出要另找渠道获取
-w指定工作目录相对路径的目标以该目录为基准
-e注入环境变量只对本次 exec 生效,不影响容器主进程
exec 开的进程与容器主进程无关:在里面改文件、装包、改环境变量都只作用于当前容器实例,容器一重建全部丢失。持久化的改动要落到镜像或挂载目录里。
很多精简镜像里没有 bash,甚至没有 ps、curl。排查网络时更省事的方法是起一个带完整工具的容器并复用目标容器的网络命名空间。

常见报错与原因

报错原因处理办法
container is not running目标容器不在运行状态先启动容器,或改用复制文件的方式取数据
executable file not found镜像里没有这个命令,比如没有 bash换成 sh 或该镜像实际存在的工具
the input device is not a TTY在脚本或流水线里加了终端选项去掉终端选项,只保留保持输入的那个
Permission denied默认用户对目标路径没有权限用应用用户或对应编号执行,必要时核对目录属主
命令无输出直接退出命令本身执行完就结束了换成能打印结果的命令,例如查看文件内容或进程列表

排查时的常见组合

  • 先看进程再看网络:确认主进程在监听哪个端口,再验证从这个容器能否连到依赖服务
  • 对照配置:把容器内的配置文件与版本库里的文件比一遍,确认挂载生效
  • 验证解析:查看容器内的解析配置,确认短服务名能否解析到目标地址
  • 检查时间与编码:时区不一致会让日志与业务时间错位,编码不一致会出现乱码
  • 核对权限:用应用用户尝试读写数据目录,提前发现只读挂载或属主问题

易错点

  • 对已停止容器执行 exec 会报容器不在运行,需要先 start;只想取文件时也可以用 docker cp 拿
  • exec 默认以镜像内默认用户运行,多半是 root,用它验证权限问题会得出错误结论,核对应用视角时要加 -u
  • 在容器里直接改配置确认有效后再写进镜像,容易忘记回写导致下次重建问题复现
  • 在生产容器里装调试包会污染实例并可能被下一次重建冲掉,优先用外部工具容器或临时副本

数据来源与参考

  • Docker 官方 CLI 参考:docker exec(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌