Docker Cheatsheet

Essential Docker commands for containerization

← Back to Cheatsheets

Images

Pulling and Listing Images
# Pull an image docker pull nginx docker pull ubuntu:20.04 # List images docker images docker image ls # Remove images docker rmi image_name docker image rm image_name docker rmi -f image_name # Force remove # Remove unused images docker image prune docker image prune -a # Remove all unused
Working with Docker images
Building Images
# Build from Dockerfile docker build -t myapp:latest . # Build with specific Dockerfile docker build -f Dockerfile.prod -t myapp:prod . # Build with build arguments docker build --build-arg NODE_ENV=production -t myapp . # Tag an image docker tag myapp:latest myapp:v1.0 docker tag myapp:latest registry/myapp:latest
Creating custom Docker images

Containers

Running Containers
# Run a container docker run nginx # Run with name and port mapping docker run -d --name web -p 8080:80 nginx # Run interactively docker run -it ubuntu /bin/bash # Run with environment variables docker run -e NODE_ENV=production myapp # Run with volume mounting docker run -v /host/path:/container/path myapp # Run with restart policy docker run --restart=always -d myapp
Starting and running containers
Container Management
# List containers docker ps docker ps -a # Include stopped # Stop/start containers docker stop container_name docker start container_name docker restart container_name # Remove containers docker rm container_name docker rm -f container_name # Force remove # Execute commands in running container docker exec -it container_name /bin/bash docker exec container_name ls /app
Managing running containers
Container Inspection
# View container logs docker logs container_name docker logs -f container_name # Follow logs docker logs --since "1h" container_name # View container details docker inspect container_name # View resource usage docker stats docker stats container_name # View processes in container docker top container_name # Copy files docker cp container:/file/path ./local/path docker cp ./local/path container:/file/path
Monitoring and inspecting containers

Docker Compose

Basic Compose Commands
# Start services docker-compose up docker-compose up -d # Detached mode # Start specific services docker-compose up service1 service2 # Stop services docker-compose down docker-compose down --volumes # Remove volumes # View status docker-compose ps docker-compose logs # Execute commands docker-compose exec service_name /bin/bash docker-compose run service_name command
Docker Compose basics
Compose Management
# Build services docker-compose build docker-compose build service_name # Rebuild and start docker-compose up --build # Scale services docker-compose up --scale web=3 # View processes docker-compose top # View logs docker-compose logs docker-compose logs service_name docker-compose logs -f # Follow logs # Validate configuration docker-compose config
Advanced Compose operations

Volumes and Networks

Volume Management
# Create volumes docker volume create myvolume # List volumes docker volume ls # Inspect volumes docker volume inspect myvolume # Remove volumes docker volume rm myvolume docker volume prune # Remove unused # Use named volumes docker run -v myvolume:/data myapp # Use bind mounts docker run -v /host/path:/container/path myapp # Use tmpfs docker run --tmpfs /tmp myapp
Persistent data storage
Network Management
# List networks docker network ls # Create networks docker network create mynetwork docker network create --driver bridge mybridge # Inspect networks docker network inspect mynetwork # Remove networks docker network rm mynetwork docker network prune # Remove unused # Connect containers to networks docker network connect mynetwork container_name docker network disconnect mynetwork container_name # Run container on specific network docker run --network mynetwork myapp
Container networking

Advanced Docker

Docker System
# View system information docker info # View disk usage docker system df # Clean up unused data docker system prune docker system prune -a # Remove all unused # View daemon logs docker system events # View Docker version docker version # Login to registry docker login docker logout
System-level Docker commands
Multi-stage Builds
# Example Dockerfile FROM node:14 AS builder WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY . . RUN npm run build FROM nginx:alpine AS production COPY --from=builder /app/dist /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
Optimizing Docker images
Dockerfile Best Practices
# Use specific tags FROM node:14-alpine # Leverage layer caching COPY package*.json ./ RUN npm ci --only=production COPY . . # Use multi-stage builds # Run as non-root user USER node # Set working directory WORKDIR /app # Expose ports explicitly EXPOSE 3000 # Use .dockerignore
Writing efficient Dockerfiles