--- name: docker-debugging description: Container debugging and troubleshooting techniques for production issues sasmp_version: "1.3.0" bonded_agent: 07-docker-production bond_type: PRIMARY_BOND --- # Docker Debugging Skill Master container debugging and troubleshooting for development and production issues. ## Purpose Diagnose and resolve container issues including crashes, performance problems, networking failures, and resource constraints. ## Parameters | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | container | string | No | - | Container name/ID | | issue_type | enum | No | - | crash/network/resource/health | | verbose | boolean | No | false | Detailed output | ## Debugging Commands ### Container Logs ```bash # Last 100 lines docker logs --tail 100 # Follow logs docker logs -f # With timestamps docker logs -t # Specific time range docker logs --since 1h --until 30m ``` ### Interactive Debugging ```bash # Execute shell in running container docker exec -it /bin/sh # As root (for debugging) docker exec -u 0 -it /bin/sh # Run command docker exec ps aux ``` ### Container Inspection ```bash # Full inspection docker inspect # Specific fields docker inspect --format='{{.State.Status}}' docker inspect --format='{{.State.Health.Status}}' docker inspect --format='{{json .NetworkSettings}}' ``` ## Issue Diagnosis ### Container Won't Start ```bash # Check exit code docker inspect --format='{{.State.ExitCode}}' # View last logs docker logs --tail 50 # Check events docker events --filter 'container=' --since 1h ``` ### Exit Code Reference | Code | Meaning | Action | |------|---------|--------| | 0 | Success | Normal exit | | 1 | General error | Check logs | | 137 | OOMKilled | Increase memory | | 139 | Segfault | Check app code | | 143 | SIGTERM | Graceful shutdown | ### Health Check Failures ```bash # Check health status docker inspect --format='{{json .State.Health}}' # View health logs docker inspect --format='{{range .State.Health.Log}}{{.Output}}{{end}}' # Manually test health docker exec curl -f http://localhost/health ``` ### Resource Issues ```bash # Live stats docker stats # Formatted output docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}" # Check limits docker inspect --format='{{.HostConfig.Memory}}' ``` ### Network Issues ```bash # Check network docker network inspect # Test DNS docker exec nslookup # Test connectivity docker exec ping -c 3 docker exec curl http://:port # View ports docker port ``` ## Troubleshooting Flowchart ``` Container Issue? │ ├─ Won't Start │ ├─ Check logs: docker logs │ ├─ Check exit code: docker inspect │ └─ Verify image: docker pull │ ├─ Unhealthy │ ├─ Check health logs │ ├─ Test health endpoint manually │ └─ Increase start_period │ ├─ High Resource │ ├─ Check stats: docker stats │ ├─ Increase limits │ └─ Profile application │ └─ Network Failed ├─ Check DNS: nslookup ├─ Check connectivity: ping/curl └─ Verify network membership ``` ## Debug Container ```bash # Run debug container in same network docker run --rm -it --network \ nicolaka/netshoot # Available tools: curl, dig, nmap, tcpdump, etc. ``` ## Error Handling ### Common Errors | Error | Cause | Solution | |-------|-------|----------| | `container not found` | Wrong name/ID | Use `docker ps -a` | | `exec failed` | Container stopped | Start container first | | `no such file` | Missing binary | Use correct image | ## Usage ``` Skill("docker-debugging") ``` ## Assets - `assets/debug-commands.yaml` - Command reference - `scripts/container-health-check.sh` - Health check script ## Related Skills - docker-production - docker-networking