Cheat Sheet
Docker Cheat Sheet
Containers, images, compose, volumes, and networking commands
Container Lifecycle
docker run -d --name myapp nginx # Run container in background
docker run -it --rm ubuntu bash # Run interactive, remove on exit
docker ps # Running containers
docker ps -a # All containers
docker stop myapp # Stop
docker start myapp # Start stopped container
docker restart myapp # Restart
docker rm myapp # Remove container
docker rm $(docker ps -aq) # Remove all containers
Images
docker images # List images
docker pull nginx:alpine # Download image
docker rmi nginx # Remove image
docker rmi $(docker images -q) # Remove all images
docker build -t myapp:1.0 . # Build from Dockerfile
docker tag myapp:1.0 myapp:latest # Tag image
docker push myuser/myapp:1.0 # Push to registry
Dockerfile Basics
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Docker Compose
version: "3.8"
services:
web:
build: .
ports:
- "3000:3000"
volumes:
- ./data:/app/data
environment:
- DB_HOST=db
depends_on:
- db
db:
image: postgres:16-alpine
volumes:
- pgdata:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: secret
volumes:
pgdata:
docker compose up -d # Start all services
docker compose down # Stop and remove
docker compose logs -f # Follow logs
docker compose exec web bash # Shell into service
docker compose restart web # Restart one service
Volumes
docker volume ls # List volumes
docker volume create mydata # Create named volume
docker volume inspect mydata # Show mount point
docker run -v mydata:/app/data nginx # Mount volume
docker run -v $(pwd):/app nginx # Bind mount
docker volume prune # Remove unused volumes
Networking
docker network ls # List networks
docker network create mynet # Create network
docker run --network mynet nginx # Attach to network
docker network connect mynet myapp # Connect running container
docker network disconnect mynet myapp # Disconnect
Useful Combos
# Clean everything unused
docker system prune -a --volumes
# Copy files from container
docker cp myapp:/app/logs.txt ./logs.txt
# Run command in running container
docker exec -it myapp bash
# View resource usage
docker stats
# View logs
docker logs -f --tail 100 myapp