Docker Helper
Simplify Docker container management, compose setup, and debugging through natural language commands.
When to Use
✅ USE this skill when:
- "Show me all running containers"
- "Start/stop/restart container [name]"
- "Show logs for [container]"
- "Check disk usage of Docker"
- "Prune unused containers/images"
- "Create a docker-compose.yml for [service]"
- "What's running on port 8080?"
- "Container [name] won't start, debug it"
❌ DON'T use this skill when:
- Need Kubernetes management → use a K8s skill
- Building complex multi-service orchestrations → consider Docker Swarm/K8s skills
- Production deployment with zero-downtime → use deployment-specific skills
Workflow
1. Container Management
When the user asks about containers, the agent runs:
# List all
docker ps -a
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
# Inspect specific
docker inspect [container] | jq '.[0].NetworkSettings.Ports'
docker stats [container] --no-stream
# Control
docker start/stop/restart [container]
docker rm -f [container] (only with user confirmation)
2. Logs & Debugging
For debugging container issues:
# Standard logs
docker logs [container] --tail 50
docker logs [container] --tail 200 | grep -i error
# Resource issues
docker stats --no-stream
# Check why container exited
docker inspect [container] | jq '.[0].State'
docker logs [container] --tail 20 --timestamps
3. Image Management
# List images
docker images
# Build
docker build -t [name]:[tag] .
# Cleanup (with confirmation)
docker image prune -a -f
4. Docker Compose
When the user needs a compose file:
- Ask what services they need (e.g., "nginx + postgres + redis")
- Generate a
docker-compose.ymlwith:- Appropriate image tags (avoid
latestin production) - Volume mounts for persistence
- Network configuration
- Health checks where applicable
- Environment variable stubs (
.envfile)
- Appropriate image tags (avoid
- Show the user the generated file, offer to adjust
5. Resource Cleanup (WITH CONFIRMATION)
Always ask for confirmation before:
docker system prune -a -f(removes ALL unused resources)docker volume prune -f(removes orphaned volumes with data)docker image rmwithout the-fflag first
Common Templates
Web App (Node/Python + Postgres):
services:
app:
build: .
ports: ["${PORT}:${PORT}"]
env_file: .env
depends_on: [db]
db:
image: postgres:16-alpine
volumes: ["pgdata:/var/lib/postgresql/data"]
environment:
POSTGRES_DB: ${DB_NAME}
POSTGRES_PASSWORD: ${DB_PASS}
volumes: {pgdata:}
Nginx Reverse Proxy:
services:
nginx:
image: nginx:alpine
ports: ["80:80", "443:443"]
volumes: ["./nginx.conf:/etc/nginx/nginx.conf:ro", "./html:/usr/share/nginx/html:ro"]
Examples
User: "What containers are running?" Agent: Runs
docker ps --format "table..."and shows a clean tableUser: "My nginx container won't start" Agent: Checks logs + inspect, identifies the port conflict or config error
User: "Clean up Docker, it's using too much space" Agent: Runs
docker system df, shows usage, asks what to pruneUser: "Create a compose file for a Python app with Redis" Agent: Generates docker-compose.yml + .env.example, explains each part
Notes
- Always prefix destructive commands with confirmation
- Use
docker compose(v2) overdocker-compose(v1) when available - Prefer alpine-based images for smaller footprint
- For security: never expose Docker socket without TLS