A quick reference for Docker โ the container platform. Bookmark this page.
Container Lifecycle
# Run
docker run -d --name web -p 8080:80 nginx:alpine
docker run -it --rm ubuntu:22.04 bash
docker run -d -v ./data:/data --env-file .env myapp:v1
# List
docker ps # Running
docker ps -a # All
# Stop/start/restart
docker stop web
docker start web
docker restart web
# Remove
docker rm web
docker rm -f web
docker container prune # Remove all stoppedImages
# Build
docker build -t myapp:v1 .
docker build -t myapp:v1 -f Dockerfile.prod .
docker build --no-cache -t myapp:v1 .
docker build --platform linux/amd64,linux/arm64 -t myapp:v1 .
# List and manage
docker images
docker image prune # Remove dangling
docker image prune -a # Remove all unused
docker rmi nginx:alpine
# Pull/push
docker pull nginx:alpine
docker tag myapp:v1 registry.example.com/myapp:v1
docker push registry.example.com/myapp:v1Inspect and Debug
# Logs
docker logs web
docker logs -f web # Follow
docker logs --tail 100 web
# Execute in container
docker exec -it web bash
docker exec web cat /etc/nginx/nginx.conf
# Inspect
docker inspect web
docker inspect --format '{{.NetworkSettings.IPAddress}}' web
# Resource usage
docker stats
docker top webVolumes and Networks
# Volumes
docker volume create mydata
docker volume ls
docker run -v mydata:/data nginx
docker volume rm mydata
# Networks
docker network create mynet
docker network ls
docker run --network mynet --name web nginx
docker network connect mynet existing-containerDocker Compose
docker compose up -d
docker compose down
docker compose logs -f
docker compose ps
docker compose exec web bash
docker compose build --no-cacheCleanup
# Remove everything unused
docker system prune -a --volumes
# Check disk usage
docker system dfTips and Tricks
- Use multi-stage builds to reduce image size
- Use
.dockerignoreto exclude files from build context - Use
--initflag for proper signal handling in containers - Pin image versions:
nginx:1.25-alpinenotnginx:latest - Use
docker compose watchfor live development reloading