Diagnose container failures, networking issues, permissions, and port conflicts
Scanned 2/12/2026
Install to Claude Code
npx -y skills add mwguerra/claude-code-plugins --skill docker-troubleshoot --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Docker Troubleshoot?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/mwguerra-docker-troubleshoot)More formats (shields.io, HTML) on the badges page.
---
name: docker-troubleshoot
description: Diagnose container failures, networking issues, permissions, and port conflicts
---
# Docker Troubleshooting Skill
## Overview
This skill helps diagnose and resolve common Docker issues:
- Container startup failures
- Networking problems
- Permission errors
- Port conflicts
- Data persistence issues
- Health check failures
## Process
### 1. Consult Documentation
Read relevant documentation:
- `17-troubleshooting.md` for common issues
- `15-port-conflicts.md` for port problems
- `16-restart-strategies.md` for restart issues
### 2. Diagnose Issue
Gather information:
```bash
# Check container status
docker compose ps -a
# View logs
docker compose logs servicename
# Check configuration
docker compose config
# Inspect container
docker inspect containername
```
### 3. Apply Solution
## Common Issues and Solutions
### Container Won't Start
**Diagnosis:**
```bash
docker compose logs servicename
docker inspect --format='{{.State.ExitCode}}' containername
```
**Solutions:**
- Check logs for error messages
- Verify configuration syntax
- Check dependencies are running
- Verify image exists
### Port Already in Use
**Diagnosis:**
```bash
lsof -i :3000
# or
netstat -tulpn | grep 3000
```
**Solutions:**
```bash
# Kill process
kill $(lsof -t -i:3000)
# Or change port in compose
ports:
- "3001:3000"
```
### Permission Denied
**Diagnosis:**
```bash
docker compose exec app ls -la /app/data
```
**Solutions:**
```yaml
# Fix in compose
services:
app:
user: "1000:1000"
# Or fix in container
docker compose exec -u root app chown -R appuser:appgroup /app/data
```
### Data Disappearing
**Diagnosis:**
```bash
docker volume ls
docker compose config | grep -A5 "volumes:"
```
**Solutions:**
```yaml
# Use named volumes instead of anonymous
volumes:
- postgres_data:/var/lib/postgresql/data # Named (persists)
# NOT: - /var/lib/postgresql/data # Anonymous (deleted)
```
### Container Can't Reach Other Container
**Diagnosis:**
```bash
docker network inspect networkname
docker compose exec app ping db
docker compose exec app nslookup db
```
**Solutions:**
```yaml
# Ensure same network
services:
app:
networks:
- backend
db:
networks:
- backend
networks:
backend:
```
### Health Check Failing
**Diagnosis:**
```bash
docker inspect --format='{{json .State.Health}}' containername | jq
```
**Solutions:**
```yaml
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s # Give time to start
```
### Out of Disk Space
**Diagnosis:**
```bash
docker system df
docker system df -v
```
**Solutions:**
```bash
# Clean unused resources
docker system prune -a --volumes
```
### Build Cache Issues
**Solutions:**
```bash
docker compose build --no-cache
docker builder prune -a
```
## Debugging Commands
```bash
# 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
```
## Quick Diagnostic Checklist
1. **Check if container is running:** `docker compose ps`
2. **Check logs:** `docker compose logs servicename`
3. **Check network:** `docker network ls`
4. **Check volumes:** `docker volume ls`
5. **Check resources:** `docker stats`
6. **Validate config:** `docker compose config`
7. **Check disk space:** `docker system df`
## Error Messages Reference
| Error | Cause | Solution |
|-------|-------|----------|
| "port is already allocated" | Port in use | Kill process or change port |
| "network not found" | Missing network | Create network or check name |
| "volume not found" | Missing volume | Create volume or check name |
| "no such service" | Service name typo | Check compose.yaml |
| "unauthorized" | Auth issue | `docker login` |
| "image not found" | Missing image | `docker compose pull` |
| "permission denied" | File permissions | Fix ownership/permissions |
| "out of memory" | Memory limit | Increase limit or optimize app |
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!