My Docker cheatsheet
Cleanup
| Task | Command |
|---|---|
| Remove all images | docker rmi $(docker images -a -q) |
| Prune system (containers, networks, dangling images, build cache) | docker system prune |
| Same, plus all unused images and volumes | docker system prune -a --volumes |
| Prune unused volumes only | docker volume prune |
| Prune networks only | docker network prune |
| Stop all running containers | docker stop $(docker ps -q) |
Permissions: run Docker without sudo
sudo groupadd docker # often already exists
sudo usermod -aG docker "$USER" # then log out and back inShell into a running container
docker exec -it <container-id> /bin/bashIf bash isn’t installed in the image (common on Alpine-based images), fall back to:
docker exec -it <container-id> /bin/shDiagnostics
docker info # daemon and host details
docker system df # disk usage by images/containers/volumes
docker logs <container-id> # container stdout/stderr
docker logs -f <container-id> # ...and followLimit Docker log size
Container logs are unlimited by default. Cap them in /etc/docker/daemon.json:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
}
}Then:
sudo systemctl restart dockerExisting containers keep their old log config until recreated.
More daemon options: Docker daemon configuration file.
Aliasing docker-compose to docker compose
# in ~/.bashrc or ~/.zshrc
alias docker-compose='docker compose --compatibility'Bash and zsh aliases automatically forward arguments, so any docker-compose up -d, docker-compose logs -f web, etc. just works.
LINKS
- The Ultimate Docker Cheat Sheet — https://dockerlabs.collabnix.com/docker/cheatsheet/
- Docker daemon configuration — https://docs.docker.com/engine/reference/commandline/dockerd/
- Dockerfile reference — https://docs.docker.com/engine/reference/builder/