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
- Update package index:
sudo apt update- Install prerequisites:
sudo apt install \
ca-certificates \
curl \
gnupg \
lsb-release- 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- 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- Install Docker Engine:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin- Start Docker service:
sudo systemctl start docker
sudo systemctl enable dockerAdd User to Docker Group
sudo usermod -aG docker $USERYou’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 dockerFor 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 dockerArch Linux Installation
sudo pacman -S docker
sudo systemctl start docker.service
sudo systemctl enable docker.service
sudo usermod -aG docker $USERVerify Installation
Test Docker
sudo docker run hello-worldCheck Version
docker --version
docker compose versionSystem Information
docker infoDocker 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-composePost-Installation Configuration
Configure Docker to Start on Boot
sudo systemctl enable docker.service
sudo systemctl enable containerd.serviceConfigure 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 dockerTroubleshooting
Permission Denied
If you get permission errors without sudo:
# Add user to docker group
sudo usermod -aG docker $USER
newgrp dockerDocker Service Won’t Start
# Check service status
sudo systemctl status docker
# View logs
sudo journalctl -u docker.servicePort Conflicts
If ports are already in use:
# Find processes using Docker ports
sudo netstat -tulpn | grep :2375
sudo lsof -i :2375Security Considerations
Running Docker without Sudo
While convenient, adding users to the docker group has security implications. Consider:
- Use sudo for Docker commands
- Implement Docker security scanning
- 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 --reloadSources
For other platforms, check our Docker macOS installation and Windows Docker setup.