小牛丨软件测试学习小牛丨软件测试学习
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
  • Linux 测试环境精华文章

    • Linux 测试环境精华文章
    • 1. 测试面试常问 Linux 命令怎么准备
    • 2. 日志排查常用命令怎么用
    • 3. grep 查日志面试怎么讲
    • 4. Linux 进程和端口怎么排查
    • 5. 测试环境部署面试怎么讲
    • 6. Linux 文件权限怎么理解
    • 7. Docker 在测试环境中怎么用
    • 8. Docker 日志和容器问题怎么排查
    • 9. K8s 对测试工程师要掌握什么
    • 10. Linux 环境问题定位思路
⌕
🛒项目实战📦资料包🛠测试神器AIAI路线CV简历测评🧭入行测评🧪测开测评🎯训练营🏆案例❤赞赏我

8. Docker 日志和容器问题怎么排查

Docker 容器问题排查,是测试环境定位中非常实用的一类能力。很多项目服务已经不再直接部署在宿主机上,而是以容器方式运行。测试人员遇到接口失败、服务访问不了、部署后页面 502、容器启动后退出、日志写不进去、文件上传失败时,如果还只会用传统的 ps、tail 查宿主机日志,就可能找不到真正的问题位置。

面试中问 Docker 日志和容器排查,不是要你深入 Docker 内核,而是要看你是否知道容器化环境下的基本检查点:容器是否存在,是否运行,是否反复重启,端口映射是否正确,日志在哪里看,环境变量是否正确,挂载目录是否有权限,容器内外路径是否一致。这些点能帮助测试快速判断问题是应用异常、容器配置、网络端口、挂载权限还是镜像版本。

一、Docker 容器问题常见现象

测试环境中常见 Docker 问题包括:

  • 容器启动后马上退出;
  • 容器运行中,但接口访问不了;
  • 接口返回 500,需要查看容器日志;
  • 页面访问 502,可能网关转发到错误容器端口;
  • 文件上传失败,挂载目录权限异常;
  • 服务连不上数据库、Redis、MQ;
  • 容器内配置和预期环境不一致;
  • 部署后还是旧版本镜像;
  • 容器反复重启,服务不稳定。

这些问题如果能按顺序排查,就不会一上来就甩给开发或运维。

二、第一步:查看容器状态

最常用命令:

docker ps

它只能看到正在运行的容器。如果你怀疑容器启动失败或已经退出,要用:

docker ps -a

重点看这些信息:

  • 容器 ID;
  • 镜像名称和版本;
  • 容器状态;
  • 启动时间;
  • 端口映射;
  • 容器名称。

如果容器状态是 Exited,说明它已经退出,要重点看启动日志。如果状态反复 Restarting,说明容器可能启动后不断异常退出。

三、第二步:查看容器日志

查看容器日志:

docker logs 容器ID

实时查看:

docker logs -f 容器ID

查看最近 200 行:

docker logs --tail 200 容器ID

如果接口刚刚报错,可以先查看最近日志,再根据业务关键字定位。

容器日志中重点看:

  • 服务是否启动成功;
  • 是否有 ERROR 或 Exception;
  • 端口是否绑定成功;
  • 数据库连接是否成功;
  • Redis、MQ 是否连接成功;
  • 配置文件是否加载正确;
  • 是否有 permission denied;
  • 是否有依赖服务连接超时。

四、第三步:确认端口映射

容器内服务端口和宿主机访问端口可能不同。

用 docker ps 查看 PORTS 字段,例如:

0.0.0.0:18080->8080/tcp

表示宿主机 18080 映射到容器内 8080。

测试访问时应该访问宿主机端口:

http://宿主机IP:18080

如果你访问 8080,可能根本访问不到。

很多 Docker 环境问题,其实是端口映射看错了。

五、第四步:进入容器排查

如果日志看不清,可以进入容器:

docker exec -it 容器ID /bin/bash

如果没有 bash:

docker exec -it 容器ID /bin/sh

进入容器后可以查看:

  • 配置文件;
  • 应用目录;
  • 日志目录;
  • 环境变量;
  • 上传文件目录;
  • 是否能访问依赖服务。

查看环境变量:

env

如果服务连接错数据库或 Redis,环境变量是重点检查对象。

六、第五步:检查挂载目录

Docker 常用挂载目录存日志、配置或上传文件。

例如:

/data/logs:/app/logs

如果容器内 /app/logs 无法写入,可能是宿主机 /data/logs 权限问题。

常见表现:

  • 容器启动失败;
  • 日志无法生成;
  • 文件上传失败;
  • 配置文件读取失败。

排查时要看:

  • 宿主机目录是否存在;
  • 宿主机目录权限是否正确;
  • 容器内路径是否正确;
  • 服务运行用户是否有权限;
  • 是否挂载到了错误目录。

七、典型场景:容器启动后马上退出

处理步骤:

  1. docker ps -a 查看容器状态;
  2. 确认容器是否 Exited;
  3. docker logs 容器ID 查看启动日志;
  4. 查找 ERROR、Exception、端口占用、配置错误;
  5. 确认环境变量和配置文件;
  6. 修复后重新启动容器;
  7. 再次查看容器状态和接口冒烟。

常见原因:

  • 启动命令错误;
  • 配置文件缺失;
  • 数据库连接失败;
  • 端口冲突;
  • 权限不足;
  • 镜像版本错误。

八、典型场景:容器运行但接口访问不了

处理步骤:

  1. docker ps 确认容器运行;
  2. 查看端口映射;
  3. 确认访问的是宿主机 IP 和宿主机端口;
  4. 查看容器日志是否有服务启动成功信息;
  5. 进入容器确认应用是否监听端口;
  6. 检查 Nginx 或网关转发;
  7. 检查防火墙或网络策略;
  8. 用接口冒烟验证。

容器运行不代表服务可用,这是面试中一定要说清楚的点。

九、典型场景:接口 500 查容器日志

接口返回 500 时,可以这样定位:

  1. 记录请求时间、接口路径、业务 ID;
  2. docker logs --tail 500 容器ID 查看最近日志;
  3. 搜索订单号、用户 ID、TraceId、ERROR;
  4. 如果日志太多,可以先复制到文件或进入容器查看;
  5. 判断是代码异常、配置错误、数据库异常、依赖服务异常还是测试数据问题;
  6. 提 Bug 时附上接口请求、响应和关键容器日志。

面试回答可以这样讲:

Docker 环境下接口 500,我会先确认对应服务容器,再用 docker logs --tail 查看最近日志,根据请求时间、订单号或 TraceId 定位异常。如果日志显示数据库连接失败或配置错误,就按环境问题处理;如果是业务异常,就整理接口和日志证据提交开发。

十、容器反复重启怎么查

容器反复重启通常说明服务启动后异常退出,并被重启策略拉起。

排查:

docker ps -a
docker logs --tail 200 容器ID

重点看最后几行日志。常见原因:

  • 启动参数错误;
  • 缺少配置文件;
  • 依赖服务不可用;
  • 端口绑定失败;
  • 文件权限问题;
  • 内存不足导致进程退出。

不要只看到容器在运行就认为没问题,反复重启会导致接口间歇性失败。

十一、镜像版本问题怎么确认

测试部署后,有时发现功能还是旧逻辑,可能是镜像没更新或容器没重建。

检查点:

  • docker ps 看镜像名和 tag;
  • 查看部署平台构建号;
  • 查看应用启动日志版本号;
  • 调用版本接口;
  • 确认容器创建时间;
  • 确认是否拉取了最新镜像。

测试提 Bug 前最好先确认版本,避免测错环境。

十二、面试回答模板

如果面试官问“Docker 日志和容器问题怎么排查”,可以这样回答:

我会先用 docker ps 查看容器是否运行,用 docker ps -a 查看是否有退出或重启状态。然后用 docker logs 查看容器日志,重点看启动是否成功、是否有 ERROR、数据库或 Redis 连接失败、端口占用、权限不足等异常。如果容器运行但接口访问不了,我会检查端口映射,确认访问的是宿主机端口;必要时用 docker exec 进入容器查看配置、环境变量和挂载目录。对于接口 500,我会结合请求时间、订单号或 TraceId 查看容器日志,判断是应用异常、配置问题、依赖服务问题还是测试数据问题。

十三、常见追问

追问:docker ps 看不到容器怎么办?

用 docker ps -a 查看所有容器,可能容器已经退出。

追问:容器运行是否代表服务正常?

不代表。还要看应用日志、端口映射、接口返回和依赖服务状态。

追问:容器日志怎么看最近内容?

用 docker logs --tail 200 容器ID,也可以加 -f 实时跟踪。

追问:端口映射错误会有什么表现?

容器内服务可能正常,但外部访问失败或访问到旧服务。要看宿主机端口和容器端口映射关系。

十四、练习清单

  1. 用 docker ps 查看运行容器;
  2. 用 docker ps -a 查看退出容器;
  3. 用 docker logs --tail 查看最近日志;
  4. 用 docker logs -f 实时看日志;
  5. 用 docker exec 进入容器;
  6. 查看容器环境变量;
  7. 理解端口映射;
  8. 排查容器启动后退出;
  9. 排查容器运行但接口不通;
  10. 准备 Docker 容器排查面试回答。

Docker 容器问题排查的核心不是命令数量,而是顺序:先看容器状态,再看日志,再看端口映射,再看配置和挂载,最后结合接口和业务数据验证。

配套刷题:

  • Linux测试环境面试题
相关推荐

下一步可以看这些

面试通关软件测试面试通关系列精华文章

把面试题、项目、简历和训练营串成一套求职准备路径。

入行路线零基础入行软件测试专题路径

从测评、学习路线、项目、简历到面试,按顺序入行。

进阶路线初中级测试进阶高级专题路径

接口自动化、性能测试、CI/CD、复杂业务质量保障进阶路线。

AI 方向AI 测试学习路线专题页

大模型评测、RAG 测试、Agent 测试和 AI 自动化路线。

求职结果Offer 案例 / 学员案例展示

看看真实学员 Offer 案例,判断目标和学习投入是否匹配。

资料 / 交流群添加小牛微信

备注:资料、简历、AI 或找工作,领取对应资料或进交流群。

添加小牛微信
Prev
7. Docker 在测试环境中怎么用
Next
9. K8s 对测试工程师要掌握什么