Docker

Installation

Ubuntu/Debian

# Update package manager
sudo apt update
 
# Install dependencies
sudo apt install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
 
# Add Docker GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
 
# Add Docker repository
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
 
# Install Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

CentOS/RHEL

# Install Docker repository
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
 
# Install Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

Quick Install (All Linux)

curl -fsSL https://get.docker.com | bash

Post-Installation Setup

# Add user to docker group (optional, to run docker without sudo)
sudo usermod -aG docker $USER
newgrp docker
 
# Enable and start Docker
sudo systemctl enable docker
sudo systemctl start docker
 
# Verify installation
docker --version
docker run hello-world

Docker Compose Installation

Standalone Binary

# Download latest release
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
 
# Make it executable
sudo chmod +x /usr/local/bin/docker-compose
 
# Verify installation
docker-compose --version
# Already included in recent docker-ce installation
docker compose version

Service Management

# Start Docker
sudo systemctl start docker
 
# Stop Docker
sudo systemctl stop docker
 
# Restart Docker
sudo systemctl restart docker
 
# Enable Docker on boot
sudo systemctl enable docker
 
# Check Docker status
sudo systemctl status docker
 
# View Docker logs
sudo journalctl -u docker -f

Docker Registry

# Login to Docker Hub
docker login
 
# Login to custom registry
docker login registry.example.com
 
# Logout
docker logout
 
# Logout from custom registry
docker logout registry.example.com

Uninstall Docker

Ubuntu/Debian

# Remove Docker packages
sudo apt remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
 
# Remove Docker images, containers, volumes
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

CentOS/RHEL

# Remove Docker packages
sudo yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
 
# Remove Docker images, containers, volumes
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

Configuration

Daemon Configuration

# Edit daemon config
sudo nano /etc/docker/daemon.json

Example daemon.json

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "storage-driver": "overlay2",
  "registry-mirrors": ["https://mirror.example.com"]
}

Apply Configuration Changes

# Reload configuration
sudo systemctl daemon-reload
sudo systemctl restart docker

Docker Storage

# Check Docker storage location
docker info | grep -i "docker root"
 
# View disk usage
docker system df
 
# Cleanup unused images, containers, volumes
docker system prune -a
 
# Cleanup with volumes
docker system prune -a --volumes