cheatsheet

Docker Commands Cheatsheet

Essential Docker commands for everyday use - containers, images, volumes, networks, and Docker Compose.

Published: December 12, 2024

Docker Commands Cheatsheet

Container Management

Basic Operations

# List containers
docker ps                    # Running only
docker ps -a                 # All containers

# Start/Stop/Restart
docker start <container>
docker stop <container>
docker restart <container>

# Remove containers
docker rm <container>
docker rm -f <container>     # Force remove running
docker container prune       # Remove all stopped

Run Containers

# Basic run
docker run <image>

# Common flags
docker run -d <image>                    # Detached mode
docker run -it <image> /bin/bash         # Interactive
docker run --name myapp <image>          # Named container
docker run -p 8080:80 <image>            # Port mapping
docker run -v /host:/container <image>   # Volume mount
docker run -e VAR=value <image>          # Environment var
docker run --rm <image>                  # Auto-remove on exit
docker run --network mynet <image>       # Custom network

# Full example
docker run -d \
  --name webapp \
  -p 3000:3000 \
  -v $(pwd):/app \
  -e NODE_ENV=production \
  --restart unless-stopped \
  node:18-alpine

Logs & Exec

# View logs
docker logs <container>
docker logs -f <container>     # Follow
docker logs --tail 100 <container>

# Execute commands
docker exec -it <container> /bin/bash
docker exec <container> ls -la

Image Management

# List images
docker images
docker images -a              # All including intermediate

# Pull/Push
docker pull <image>:<tag>
docker push <image>:<tag>

# Build
docker build -t myapp:1.0 .
docker build -f Dockerfile.prod -t myapp:prod .

# Remove
docker rmi <image>
docker image prune            # Remove dangling
docker image prune -a         # Remove unused

# Tag
docker tag myapp:latest myrepo/myapp:1.0

Docker Compose

# Start services
docker-compose up
docker-compose up -d          # Detached
docker-compose up --build     # Rebuild images

# Stop services
docker-compose down
docker-compose down -v        # Remove volumes too

# View logs
docker-compose logs
docker-compose logs -f service_name

# Execute in service
docker-compose exec service_name bash

# Scale
docker-compose up -d --scale web=3

Sample docker-compose.yml

version: '3.8'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
    environment:
      - NODE_ENV=development
    depends_on:
      - db
  
  db:
    image: postgres:15
    volumes:
      - pgdata:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=secret

volumes:
  pgdata:

Volumes

# Create/List/Remove
docker volume create myvolume
docker volume ls
docker volume rm myvolume
docker volume prune

# Inspect
docker volume inspect myvolume

# Use in container
docker run -v myvolume:/data <image>
docker run -v $(pwd):/app <image>   # Bind mount

Networks

# Create/List/Remove
docker network create mynet
docker network ls
docker network rm mynet

# Connect containers
docker network connect mynet <container>
docker network disconnect mynet <container>

# Inspect
docker network inspect mynet

System & Cleanup

# System info
docker info
docker version
docker stats                  # Live resource usage

# Cleanup
docker system prune           # Remove unused data
docker system prune -a        # Remove all unused
docker system df              # Disk usage

Dockerfile Reference

FROM node:18-alpine

WORKDIR /app

# Copy package files first (better caching)
COPY package*.json ./
RUN npm ci --only=production

# Copy application code
COPY . .

# Build arguments
ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}

# Expose port
EXPOSE 3000

# Health check
HEALTHCHECK --interval=30s --timeout=3s \
  CMD curl -f http://localhost:3000/health || exit 1

# Run as non-root user
USER node

CMD ["node", "server.js"]

Quick Reference

TaskCommand
Run containerdocker run -d -p 8080:80 nginx
View logsdocker logs -f container
Shell into containerdocker exec -it container bash
Build imagedocker build -t app:1.0 .
Stop all containersdocker stop $(docker ps -q)
Remove all containersdocker rm $(docker ps -aq)
Remove all imagesdocker rmi $(docker images -q)
Clean everythingdocker system prune -a

Tags

dockerdevopscontainerskubernetes

Found this useful?

Subscribe to get more cheatsheets and resources.