Install Docker on Linux

Installing Docker on Linux varies by distribution. This guide covers Ubuntu, Debian, Fedora, CentOS, and Arch Linux installations.

Ubuntu/Debian Installation

System Requirements

  • Ubuntu 20.04+ or Debian 10+
  • 64-bit processor
  • 4GB RAM minimum

Install Using Official Repository

  1. Update package index:
sudo apt update
  1. Install prerequisites:
sudo apt install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
  1. Add Docker’s official GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. Set up the 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
  1. Install Docker Engine:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  1. Start Docker service:
sudo systemctl start docker
sudo systemctl enable docker

Add User to Docker Group

sudo usermod -aG docker $USER

You’ll need to log out and log back in for changes to take effect.

Fedora/CentOS/RHEL Installation

For Fedora

sudo dnf install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo systemctl start docker
sudo systemctl enable docker

For CentOS/RHEL

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo systemctl start docker
sudo systemctl enable docker

Arch Linux Installation

sudo pacman -S docker
sudo systemctl start docker.service
sudo systemctl enable docker.service
sudo usermod -aG docker $USER

Verify Installation

Test Docker

sudo docker run hello-world

Check Version

docker --version
docker compose version

System Information

docker info

Docker Compose Installation

Docker Compose is now included as a plugin with Docker. If you need standalone Docker Compose:

Install Docker Compose Standalone

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Post-Installation Configuration

Configure Docker to Start on Boot

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

Configure Docker Daemon (Optional)

Create or edit /etc/docker/daemon.json:

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

Restart Docker:

sudo systemctl restart docker

Troubleshooting

Permission Denied

If you get permission errors without sudo:

# Add user to docker group
sudo usermod -aG docker $USER
newgrp docker

Docker Service Won’t Start

# Check service status
sudo systemctl status docker

# View logs
sudo journalctl -u docker.service

Port Conflicts

If ports are already in use:

# Find processes using Docker ports
sudo netstat -tulpn | grep :2375
sudo lsof -i :2375

Security Considerations

Running Docker without Sudo

While convenient, adding users to the docker group has security implications. Consider:

  1. Use sudo for Docker commands
  2. Implement Docker security scanning
  3. Regularly update Docker packages

Firewall Configuration

# For UFW (Ubuntu)
sudo ufw allow 2376/tcp

# For firewalld (Fedora/CentOS)
sudo firewall-cmd --permanent --add-port=2376/tcp
sudo firewall-cmd --reload

Sources

For other platforms, check our Docker macOS installation and Windows Docker setup.