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