Docker Cheat Sheet for Developers: Practical Commands You Actually Use
A practical Docker cheat sheet covering daily workflows: images, containers, logs, exec, volumes, networks, and docker compose.
Why this cheat sheet?
Docker has a lot of commands, but in day-to-day engineering you usually use a small set repeatedly. This guide focuses on the commands that help during local development, debugging, and deployment prep.
1) Images
Build image
BASHdocker build -t my-app:latest .
Use -t to tag the image. Prefer explicit tags (my-app:1.2.0) for release workflows.
List images
BASHdocker images
Remove image
BASHdocker rmi my-app:latest
2) Containers
Run container in background
BASHdocker run -d --name my-app -p 3000:3000 my-app:latest
List running containers
BASHdocker ps
List all containers
BASHdocker ps -a
Stop and remove container
BASHdocker stop my-app docker rm my-app
3) Logs and Debugging
Stream logs
BASHdocker logs -f my-app
Open shell inside container
BASHdocker exec -it my-app sh
If image has bash:
BASHdocker exec -it my-app bash
Inspect container details
BASHdocker inspect my-app
4) Volumes
Create volume
BASHdocker volume create app-data
Mount volume when running
BASHdocker run -d --name my-db -v app-data:/var/lib/postgresql/data postgres:16
List and clean unused volumes
BASHdocker volume ls docker volume prune
5) Networks
Create network
BASHdocker network create app-net
Run containers in the same network
BASHdocker run -d --name api --network app-net my-api:latest docker run -d --name worker --network app-net my-worker:latest
6) Docker Compose essentials
Start services
BASHdocker compose up -d
Rebuild and restart
BASHdocker compose up -d --build
Stop services
BASHdocker compose down
View logs for one service
BASHdocker compose logs -f api
7) Cleanup shortcuts
Remove stopped containers, dangling images, and unused networks
BASHdocker system prune
Aggressive cleanup (be careful)
BASHdocker system prune -a --volumes
Use the aggressive variant only when you understand what can be deleted.
Common workflow (quick loop)
- Build image
- Run container
- Check logs
- Exec into container when needed
- Rebuild/restart after code changes
This simple loop is enough for most backend and fullstack local development tasks.
Conclusion
Keep this cheat sheet close, but avoid memorizing everything at once. Start with run/ps/logs/exec/compose, then add volumes and network commands as your architecture grows.