Table of Contents

Docker is a platform for developing, shipping, and running applications in containers. This guide covers installing Docker on different operating systems.

Install

Ubuntu and Debian

Follow these steps to install Docker on Ubuntu or Debian-based distributions:

  1. Update the apt package index and install packages to allow apt to use a repository over HTTPS:

    sudo apt-get update
    sudo apt-get install -y \
        apt-transport-https \
        ca-certificates \
        curl \
        gnupg \
        lsb-release
    
  2. Add Docker's official GPG key:

    sudo mkdir -p /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/$(lsb_release -is | tr '[:upper:]' '[:lower:]')/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    
  3. Set up the repository:

    echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/$(lsb_release -is | tr '[:upper:]' '[:lower:]') \
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
  4. Update the apt package index and install Docker:

    sudo apt-get update
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  5. Add your user to the docker group to run Docker commands without sudo:

    sudo usermod -aG docker $USER
    
    Note

    Log out and back in for this change to take effect.

  6. Verify the installation:

    docker --version
    docker run hello-world
    

CentOS/RHEL

  1. Install required packages:

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
  2. Add the Docker repository:

    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
  3. Install Docker:

    sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  4. Start and enable Docker:

    sudo systemctl start docker
    sudo systemctl enable docker
    
  5. Add your user to the docker group:

    sudo usermod -aG docker $USER
    
  6. Verify the installation:

    docker --version
    docker run hello-world
    

Troubleshooting

Common Issues

Repository does not have a Release file

If you encounter an error about missing Release files on Debian-based systems:

Docker daemon not running

If you get "Cannot connect to the Docker daemon" errors:

  • Check if the Docker service is running: sudo systemctl status docker
  • Start the service if needed: sudo systemctl start docker

Permission denied

If you get "permission denied" errors:

  • Make sure your user is in the docker group: groups
  • If not, add it and log out/in: sudo usermod -aG docker $USER

Next Steps

Quick Reference

Essential Docker Commands

# Container management
docker run <image>                    # Run a container
docker ps                            # List running containers
docker ps -a                         # List all containers
docker stop <container>              # Stop a container
docker start <container>             # Start a stopped container
docker restart <container>           # Restart a container
docker rm <container>                # Remove a container
docker exec -it <container> bash     # Execute command in container

# Image management
docker images                        # List images
docker pull <image>                  # Pull image from registry
docker build -t <name> .             # Build image from Dockerfile
docker rmi <image>                   # Remove image
docker tag <image> <new-name>        # Tag an image

# System management
docker info                          # Display system information
docker version                       # Show Docker version
docker system prune                  # Remove unused data
docker logs <container>              # View container logs

Common Docker Run Options

# Background execution
docker run -d <image>

# Port mapping
docker run -p 8080:80 <image>

# Volume mounting
docker run -v /host/path:/container/path <image>

# Environment variables
docker run -e VAR_NAME=value <image>

# Interactive terminal
docker run -it <image> /bin/bash

# Remove container on exit
docker run --rm <image>

# Set container name
docker run --name my-container <image>

# Limit resources
docker run --memory=512m --cpus=1 <image>

Docker Compose Quick Commands

# Start services
docker-compose up

# Start in background
docker-compose up -d

# Stop services
docker-compose down

# View logs
docker-compose logs

# Rebuild images
docker-compose up --build

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