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