mcpField
D
docker-debugger

docker-debugger

github.com/onewave-ai云与 DevOps393299 次安装1 周前更新
代码仓库

关于 docker-debugger

docker-debugger 是用于排查 Docker 构建、运行、网络和性能问题的技能,指导开发者收集诊断信息、分析日志并处理常见故障。

主要功能

  1. 01构建与运行故障排查
  2. 02容器日志和状态检查
  3. 03网络诊断
  4. 04卷权限处理建议
  5. 05Dockerfile 最佳实践

适用场景

  1. 01调查容器意外退出
  2. 02追查 Docker 构建失败
  3. 03诊断容器连接问题
  4. 04解决卷权限错误

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/onewave-ai/claude-skills --skill docker-debugger

安装后在 Claude Code 中输入/docker-debugger确认已加载。

详细介绍

Docker 调试器

说明

调试 Docker 问题时:

  1. 识别问题类型:构建、运行时、网络或性能
  2. 使用诊断命令收集信息
  3. 分析日志和错误
  4. 应用修复方案

诊断命令

# Check running containers
docker ps -a

# View container logs
docker logs <container_id> --tail 100 -f

# Inspect container
docker inspect <container_id>

# Check resource usage
docker stats

# View container processes
docker top <container_id>

# Execute shell in running container
docker exec -it <container_id> /bin/sh

# Check Docker disk usage
docker system df

# View build history
docker history <image_name>

常见问题与解决方案

1. 容器立即退出
# Check exit code
docker inspect <container_id> --format='{{.State.ExitCode}}'

# View last logs
docker logs <container_id>

修复方案:

  • 确保 CMD/ENTRYPOINT 运行的是前台进程
  • 检查是否缺少依赖项
  • 验证环境变量
2. 构建失败
# Use multi-stage builds for smaller images
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:20-alpine AS runner
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
CMD ["node", "dist/index.js"]
3. 网络问题
# List networks
docker network ls

# Inspect network
docker network inspect <network_name>

# Check container IP
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container>
4. 卷权限问题
# Create non-root user
RUN addgroup -g 1001 -S appgroup && \
    adduser -u 1001 -S appuser -G appgroup

# Set ownership
COPY --chown=appuser:appgroup . .

USER appuser

Dockerfile 最佳实践

# 1. Use specific tags, not :latest
FROM node:20.10-alpine

# 2. Set working directory
WORKDIR /app

# 3. Copy dependency files first (better caching)
COPY package*.json ./
RUN npm ci --only=production

# 4. Copy source after dependencies
COPY . .

# 5. Use non-root user
USER node

# 6. Set proper labels
LABEL maintainer="[email protected]"
LABEL version="1.0"

# 7. Use HEALTHCHECK
HEALTHCHECK --interval=30s --timeout=3s \
  CMD wget -q --spider http://localhost:3000/health || exit 1

# 8. Expose ports
EXPOSE 3000

# 9. Use exec form for CMD
CMD ["node", "server.js"]

docker-compose 调试

# docker-compose.yml
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    # Add for debugging
    stdin_open: true
    tty: true
    # Override command for debugging
    command: /bin/sh
    volumes:
      - .:/app
    environment:
      - DEBUG=true
# Rebuild without cache
docker-compose build --no-cache

# View logs
docker-compose logs -f app

# Restart single service
docker-compose restart app

评论

支持 Markdown