最直接有效的方式是用 docker exec -it 启动新终端排查问题;需先确认容器运行状态,再根据镜像选择 bash 或 sh 进入,进容器后检查环境变量、进程、文件路径和服务连通性,也可不进入直接执行单条命令查日志、端口和配置。

确认容器状态再进入
先确保容器确实在运行:
docker ps 查看运行中的容器列表;
如果目标容器没出现在结果里,加 -a 参数查所有状态:
docker ps -a,重点关注 STATUS 列(如 Up 2 minutes 或 Exited (1))。
选择正确的 shell 进入
不同基础镜像默认提供的 shell 不同,选错会报错:
- 多数 Ubuntu/CentOS 镜像支持 bash:
docker exec -it /bin/bash - Alpine 等精简镜像通常只有 sh:
docker exec -it /bin/sh - 不确定时,可先尝试 sh,它兼容性更好
进容器后快速定位问题
不要盲目敲命令,优先检查这几项:
- 环境变量:运行 env,确认配置是否注入成功(比如数据库地址、端口等)
- 进程状态:用 ps aux 看主进程是否存活、有无异常子进程
- 文件路径:用 ls -l /app 或 cat /etc/nginx/conf.d/default.conf 核对挂载或配置是否到位
- 服务连通性:在容器内执行 curl -v http://localhost:8080,验证应用是否真在监听且响应正常
不进容器也能查关键信息
很多问题其实无需登录,用 docker exec 直接执行单条命令更快:
- 查日志片段:docker exec tail -n 20 /var/log/app.log
- 看端口监听:docker exec netstat -tuln | grep :3000
- 读配置文件:docker exec cat /config.yaml











