Install Docker on CentOS

This chapter covers how to install and configure Docker Engine on CentOS.

System Requirements

Docker Engine supports the following CentOS versions:

  • CentOS 9 Stream
  • CentOS 8 Stream
  • CentOS 7 (maintenance mode)

Hardware requirements: 64-bit processor, kernel 3.10+, at least 2GB RAM (4GB+ recommended). The centos-extras repository must be enabled.

Uninstall Old Versions

sudo yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine

1. Install yum-utils

sudo yum install -y yum-utils

2. Add Docker Repository

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

3. Install Docker Engine

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4. Start Docker

sudo systemctl start docker

5. Verify Installation

sudo docker run hello-world

Convenience Script

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Post-Installation Setup

Run Docker Without sudo

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker

Enable on Boot

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

Common Issues

firewalld Conflicts

# Restart Docker after firewalld changes
sudo systemctl restart docker

# Or allow Docker interface
sudo firewall-cmd --zone=trusted --add-interface=docker0 --permanent
sudo firewall-cmd --reload

SELinux Issues

# Check SELinux status
getenforce

# Temporarily set to permissive
sudo setenforce 0

# Permanent change
sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

💡 In production, keep SELinux enabled and configure policies for compatibility.

CentOS 7 Kernel Upgrade

CentOS 7 has an older kernel. Consider upgrading for better Docker support:

sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
sudo yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
sudo yum --enablerepo=elrepo-kernel install kernel-ml
sudo reboot

Uninstall Docker

sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

Further Reading