Loading...
Loading...
Container debugging and troubleshooting techniques for production issues
npx skill4agent add pluginagentmarketplace/custom-plugin-docker docker-debugging| 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 |
# Last 100 lines
docker logs --tail 100 <container>
# Follow logs
docker logs -f <container>
# With timestamps
docker logs -t <container>
# Specific time range
docker logs --since 1h --until 30m <container># Execute shell in running container
docker exec -it <container> /bin/sh
# As root (for debugging)
docker exec -u 0 -it <container> /bin/sh
# Run command
docker exec <container> ps aux# Full inspection
docker inspect <container>
# Specific fields
docker inspect --format='{{.State.Status}}' <container>
docker inspect --format='{{.State.Health.Status}}' <container>
docker inspect --format='{{json .NetworkSettings}}' <container># Check exit code
docker inspect --format='{{.State.ExitCode}}' <container>
# View last logs
docker logs --tail 50 <container>
# Check events
docker events --filter 'container=<name>' --since 1h| 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 |
# Check health status
docker inspect --format='{{json .State.Health}}' <container>
# View health logs
docker inspect --format='{{range .State.Health.Log}}{{.Output}}{{end}}' <container>
# Manually test health
docker exec <container> curl -f http://localhost/health# Live stats
docker stats <container>
# Formatted output
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}"
# Check limits
docker inspect --format='{{.HostConfig.Memory}}' <container># Check network
docker network inspect <network>
# Test DNS
docker exec <container> nslookup <service>
# Test connectivity
docker exec <container> ping -c 3 <target>
docker exec <container> curl http://<service>:port
# View ports
docker port <container>Container Issue?
│
├─ Won't Start
│ ├─ Check logs: docker logs <c>
│ ├─ 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# Run debug container in same network
docker run --rm -it --network <network> \
nicolaka/netshoot
# Available tools: curl, dig, nmap, tcpdump, etc.| Error | Cause | Solution |
|---|---|---|
| Wrong name/ID | Use |
| Container stopped | Start container first |
| Missing binary | Use correct image |
Skill("docker-debugging")assets/debug-commands.yamlscripts/container-health-check.sh