---
## Context
Docker is simple until it isn’t.
Most day-to-day work boils down to a **small, reliable set of commands** for:
- building images
- running containers
- inspecting state
- cleaning up safely
This cheatsheet focuses on **high-signal commands** that cover the majority of real-world Docker usage.
---
Build an image:
docker build -t my-image:latest .List local images:
docker imagesRemove an image:
docker rmi my-image:latestRemove unused images:
docker image pruneTag an image:
docker tag my-image:latest my-image:v1Run a container:
docker run my-imageRun interactively with a shell:
docker run -it my-image /bin/bashRun in detached mode:
docker run -d my-imageList running containers:
docker psList all containers:
docker ps -aStop a container:
docker stop <container_id>Remove a container:
docker rm <container_id>View container logs:
docker logs <container_id>Follow logs:
docker logs -f <container_id>Inspect container details:
docker inspect <container_id>Execute a command in a running container:
docker exec -it <container_id> /bin/bashCheck resource usage:
docker statsList networks:
docker network lsInspect a network:
docker network inspect <network_name>Run a container on a specific network:
docker run --network my-network my-imageExpose ports:
docker run -p 8080:80 my-imageNetworking issues are often configuration issues—inspect before guessing.
List volumes:
docker volume lsInspect a volume:
docker volume inspect <volume_name>Create a volume:
docker volume create my-volumeMount a volume:
docker run -v my-volume:/data my-imageMount a host directory:
docker run -v $(pwd):/app my-imageUnderstand whether your data is ephemeral or persistent.
Remove stopped containers:
docker container pruneRemove unused networks:
docker network pruneRemove unused volumes:
docker volume pruneRemove everything unused:
docker system prunePrune commands are powerful—review what will be removed before confirming.
Rebuild and run:
docker build -t my-image . && docker run my-imageStop and remove all containers:
docker stop $(docker ps -q)
docker rm $(docker ps -aq)Remove dangling images:
docker rmi $(docker images -f "dangling=true" -q)These patterns save time but require awareness.
- Forgetting to clean up unused resources
- Confusing image names and container IDs
- Running everything as root unnecessarily
- Baking secrets into images
- Treating containers as long-lived pets
Docker works best with stateless, reproducible containers.
- Name containers intentionally
- Keep Dockerfiles small and readable
- Use
.dockerignoreaggressively - Inspect before deleting
- Prefer rebuilding over modifying running containers
Consistency beats cleverness.
- A small command set covers most Docker usage
- Inspecting state is more useful than guessing
- Cleanup prevents resource creep
- Volumes define persistence boundaries
- Docker rewards simple, repeatable workflows
Once these commands are muscle memory, Docker becomes a quiet, reliable tool instead of a source of friction.