| name | docker-manager |
| description | Build, run, and manage Docker containers and images. Use when the user mentions Docker, containers, images, docker-compose, or containerized deployment. |
| version | 1.0.0 |
| license | MIT |
| compatibility | Requires Docker engine installed and running |
| metadata | {"author":"hermeshub","hermes":{"tags":["docker","containers","devops","deployment"],"category":"devops","requires_tools":["terminal"]}} |
| allowed-tools | Bash(docker:*) Bash(docker-compose:*) |
Docker Manager
Container lifecycle management with production-ready patterns.
When to Use
- User mentions Docker, containers, images, or Dockerfiles
- User wants to containerize an application
- User needs docker-compose orchestration
- User asks about container debugging or optimization
Procedure
Building Images
- Analyze the project to determine base image and dependencies
- Create a multi-stage Dockerfile for minimal final image
- Build:
docker build -t name:tag .
- Verify:
docker images | grep name
Running Containers
- Run:
docker run -d --name my-app -p 8080:3000 name:tag
- Check logs:
docker logs -f my-app
- Exec into:
docker exec -it my-app /bin/sh
Docker Compose
- Create docker-compose.yml with service definitions
- Start:
docker compose up -d
- Monitor:
docker compose logs -f
- Scale:
docker compose up -d --scale web=3
Cleanup
- Stop containers:
docker stop $(docker ps -q)
- Remove containers:
docker container prune
- Remove images:
docker image prune -a
- Remove volumes:
docker volume prune
Best Practices
- Use .dockerignore to exclude unnecessary files
- Pin base image versions (node:20-alpine, not node:latest)
- Use multi-stage builds to reduce final image size
- Run as non-root user in production
- Use HEALTHCHECK for container health monitoring
Pitfalls
- Never store secrets in Dockerfiles or images
- Avoid running as root in production containers
- Watch for large context sizes slowing builds
- Handle signal propagation for graceful shutdown
Verification
- Container running:
docker ps | grep name
- Health check passing:
docker inspect --format='{{.State.Health}}' name
- Logs clean:
docker logs --tail 50 name