关于 troubleshoot
troubleshoot 是帮助排查和处理常见 Docker 问题的技能,面向维护 Docker Compose 服务的开发者与运维人员。它提供诊断命令和对应解决办法,覆盖启动、网络、权限、存储及健康检查等故障。
主要功能
- 01诊断容器启动失败
- 02排查网络和端口冲突
- 03处理权限与数据持久化问题
- 04检查健康状态和磁盘空间
- 05提供 Docker Compose 排障命令
适用场景
- 01定位无法启动的 Compose 容器
- 02排查容器间无法连接或端口占用
- 03调查数据丢失、权限或健康检查故障
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mwguerra/ claude-code-plugins --skill troubleshoot安装后在 Claude Code 中输入/troubleshoot确认已加载。
详细介绍
Docker 故障排除技能
概述
此技能可帮助诊断并解决常见的 Docker 问题:
- 容器启动失败
- 网络问题
- 权限错误
- 端口冲突
- 数据持久化问题
- 健康检查失败
流程
1. 查阅文档
阅读相关文档:
17-troubleshooting.md,了解常见问题15-port-conflicts.md,了解端口问题16-restart-strategies.md,了解重启问题
2. 诊断问题
收集信息:
# Check container status
docker compose ps -a
# View logs
docker compose logs servicename
# Check configuration
docker compose config
# Inspect container
docker inspect containername
3. 应用解决方案
常见问题及解决方案
容器无法启动
诊断:
docker compose logs servicename
docker inspect --format='{{.State.ExitCode}}' containername
解决方案:
- 查看日志中的错误消息
- 验证配置语法
- 检查依赖项是否正在运行
- 验证镜像是否存在
端口已被占用
诊断:
lsof -i :3000
# or
netstat -tulpn | grep 3000
解决方案:
# Kill process
kill $(lsof -t -i:3000)
# Or change port in compose
ports:
- "3001:3000"
权限被拒绝
诊断:
docker compose exec app ls -la /app/data
解决方案:
# Fix in compose
services:
app:
user: "1000:1000"
# Or fix in container
docker compose exec -u root app chown -R appuser:appgroup /app/data
数据消失
诊断:
docker volume ls
docker compose config | grep -A5 "volumes:"
解决方案:
# Use named volumes instead of anonymous
volumes:
- postgres_data:/var/lib/postgresql/data # Named (persists)
# NOT: - /var/lib/postgresql/data # Anonymous (deleted)
容器无法访问其他容器
诊断:
docker network inspect networkname
docker compose exec app ping db
docker compose exec app nslookup db
解决方案:
# Ensure same network
services:
app:
networks:
- backend
db:
networks:
- backend
networks:
backend:
健康检查失败
诊断:
docker inspect --format='{{json .State.Health}}' containername | jq
解决方案:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s # Give time to start
磁盘空间不足
诊断:
docker system df
docker system df -v
解决方案:
# Clean unused resources
docker system prune -a --volumes
构建缓存问题
解决方案:
docker compose build --no-cache
docker builder prune -a
调试命令
# Shell into running container
docker compose exec app sh
# Shell into failed container
docker compose run --entrypoint sh app
# View resource usage
docker stats
# View container processes
docker compose top
# View real-time events
docker events
# Copy files from container
docker compose cp app:/app/logs ./logs
快速诊断清单
- 检查容器是否正在运行:
docker compose ps - 检查日志:
docker compose logs servicename - 检查网络:
docker network ls - 检查卷:
docker volume ls - 检查资源:
docker stats - 验证配置:
docker compose config - 检查磁盘空间:
docker system df
错误消息参考
| 错误 | 原因 | 解决方案 |
|---|---|---|
| "port is already allocated" | 端口已被占用 | 终止进程或更改端口 |
| "network not found" | 网络缺失 | 创建网络或检查名称 |
| "volume not found" | 卷缺失 | 创建卷或检查名称 |
| "no such service" | 服务名称拼写错误 | 检查 compose.yaml |
| "unauthorized" | 身份验证问题 | docker login |
| "image not found" | 镜像缺失 | docker compose pull |
| "permission denied" | 文件权限问题 | 修正所有权/权限 |
| "out of memory" | 内存限制 | 提高限制或优化应用 |
评论
支持 Markdown