skillZs
★ LIVE SKILL TAGS ★
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
※ REAL INSTALL DATA ※
← back to all skills
full-stack-skills/docker-skills106 installs

docker-troubleshooting

Guidance for debugging and troubleshooting Docker issues. Covers container startup failures (exit codes, docker logs, inspect), disk space exhaustion (system df/prune, log rotation), OOM and resource pressure (memory limits, stats), network connectivity problems (network inspect, iptables, DNS resolution), storage issues (permission denied, volume inspection), daemon problems (dockerd startup, socket permissions), and common error diagnosis. Use when the user asks about docker troubleshooting, docker debug, OOM, disk full, network issues, docker not starting, container crash, or needs to investigate Docker problems. 使用场景:docker 排查、docker debug、容器问题、OOM、磁盘满、网络不通、启动失败、配置问题.

How do I install this agent skill?

npx skills add https://github.com/full-stack-skills/docker-skills --skill docker-troubleshooting
view source ↗

Is this agent skill safe to install?

  • Gen Agent Trust Hubpass

    This skill provides standard guidance and commands for troubleshooting Docker-related issues and is safe to use. It focuses on diagnostic commands and best practices for resource management.

  • Socketpass

    No alerts

  • Snykpass

    Risk: LOW · No issues

What does this agent skill do?

Docker Troubleshooting — 问题排查与调试

Systematic approach to diagnosing and resolving common Docker issues.

When to Use

ALWAYS use this skill when the user mentions:

  • "docker 排查", "docker debug", "容器问题"
  • "容器启动失败", "exit code", "crash"
  • "OOM", "磁盘满", "disk full"
  • "网络不通", "network issues"
  • "docker daemon", "daemon not running"

Diagnostic Framework

1. Check container state    → docker ps -a, docker inspect
2. Check logs               → docker logs --tail 100
3. Check resources          → docker stats, docker system df
4. Check exit code          → docker inspect --format='{{.State.ExitCode}}'
5. Interactive debug        → docker run --rm -it image sh

Container Startup Failure

Exit Code Reference

CodeMeaningAction
0Success—
1Application errorCheck docker logs
125Docker daemon errorCheck daemon status
126Command cannot executeCheck permissions
127Command not foundCheck CMD/ENTRYPOINT path
137SIGKILL (OOM or docker kill)Check memory limits
139SIGSEGV (segfault)Application bug
143SIGTERM (graceful stop)Health check timeout?
# Quick diagnosis
docker ps -a | grep Exited
docker inspect --format='{{.State.ExitCode}} {{.State.Error}}' container
docker logs container

Disk Space Exhaustion

# Check disk usage
docker system df

# What's using space?
docker system df -v   # Verbose breakdown

# Clean up
docker system prune -a     # Remove all unused: images, containers, volumes, networks
docker image prune -a      # Unused images only
docker volume prune        # Unused volumes only

# Log rotation (prevent future issues)
docker run --log-opt max-size=10m --log-opt max-file=3 myapp

OOM (Out of Memory)

# Check if container was OOM-killed
docker inspect --format='{{.State.OOMKilled}}' container

# Check memory usage
docker stats --no-stream

# Solution: increase memory limit
docker update --memory=1g --memory-swap=1g container

Network Connectivity

# Check network configuration
docker network inspect bridge
docker exec container ip addr show
docker exec container ping other-container

# DNS check
docker exec container nslookup other-container
docker exec container cat /etc/resolv.conf

# Host networking check
iptables -t nat -L DOCKER -n   # Port forwarding rules

Permission Issues

# Bind mount permission denied
# Solution 1: Match UID
docker run -u $(id -u):$(id -g) -v $PWD:/app myapp

# Solution 2: Fix permissions in entrypoint
# In entrypoint script: chown -R appuser:appgroup /data

# Docker socket permission
sudo usermod -aG docker $USER   # Add user to docker group
newgrp docker                    # Refresh group (or re-login)

Workflow — 排查流程

Step 1: 查看状态: docker ps -a → 确认退出码和 OOMKilled Step 2: 查看日志: docker logs --tail 100 <container> 获取错误信息 Step 3: 深入检查: docker inspect → 检查网络/挂载/资源限制 Step 4: 交互调试: docker run -it --rm --entrypoint sh <image> 进入排查 Step 5: 资源排查: docker stats + docker system df 检查 CPU/内存/磁盘

Gotchas — Common Pitfalls

  • docker system prune is destructive: Removes ALL unused objects. Don't run blindly in production. → Recovery: Use docker system df first to preview; add --filter "until=24h" for safe cleanup; never run prune -a without confirmation.
  • Logs fill disk silently: JSON-file driver has NO rotation by default. A noisy app can fill the disk in hours. → Recovery: docker run --log-opt max-size=10m --log-opt max-file=3 app; existing: truncate -s 0 $(docker inspect -f '{{.LogPath}}' myapp).
  • OOMKilled=TRUE but no error in logs: SIGKILL can't be logged. → Recovery: Check docker inspect -f '{{.State.OOMKilled}}' myapp; increase memory: docker update --memory 512m myapp.
  • Exited (0) but service not working: Application started but crashed after health check passed. → Recovery: docker logs --tail 100 myapp; check if app listens on 0.0.0.0 (not 127.0.0.1); verify with docker exec myapp netstat -tlnp.

Boundary — 能力边界(适用与不适用场景)

分类场景说明
✅ 能做容器启动失败排查退出码分析 + docker logs + inspect
✅ 能做磁盘/日志/资源问题docker system df + prune + log rotation
✅ 能做OOM/CPU 排查docker stats + --memory 限制 + OOMKilled
⚠️ 需条件网络包级分析需 tcpdump/Wireshark + 网络知识
⚠️ 需条件内核级问题需 Linux 内核调试技能
❌ 超范围应用代码 bug 修复开发者修复代码
❌ 超范围生产环境部署使用 docker-production
❌ 超范围安全漏洞修复使用 docker-security + docker-scout

When NOT to Use This Skill

❌ Skip✅ Use Instead
Setting up productiondocker-production
Security issuesdocker-security
Performance tuningdocker-run (resource limits)
Docker basicsdocker-basics

Security & Stability

  • docker exec into production containers can expose sensitive data. Prefer log-based debugging.
  • docker system prune -a removes ALL unused images and volumes — use with caution in production.
  • Inspecting containers with --privileged debug tools can bypass security controls.
  • Never expose Docker socket (/var/run/docker.sock) to containers for debugging — it grants root access.
  • Rotate debug logs — they may contain sensitive information. Use log drivers with TTL.

📚 官方文档参考

文档地址
Docker 引擎故障排查https://docs.docker.com/engine/troubleshoot/
docker logs 命令https://docs.docker.com/reference/cli/docker/container/logs/
docker inspecthttps://docs.docker.com/reference/cli/docker/inspect/
Docker CLI 参考https://docs.docker.com/reference/cli/docker/
守护进程配置https://docs.docker.com/reference/cli/dockerd/
常见问题 FAQhttps://docs.docker.com/faq/

🧭 Docker Skills Journey

📍 You are here: docker-troubleshooting — 问题排查

← Previous: docker-production

Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.

<a href="https://skillzs.dev/skills/full-stack-skills/docker-skills/docker-troubleshooting">View docker-troubleshooting on skillZs</a>