Logo

Install Docker on linux

 Install Docker on linux

Step by step to install Docker Engine and the Docker Compose plugin, verify the setup, enable autostart, run your first container, and troubleshoot common issues.

Goals

  • Install Docker Engine from the official repository
  • Enable the Docker Compose plugin
  • Run a first test container
  • Manage user permissions and autostart
  • Update, uninstall, and troubleshoot

Requirements

  • SSH access with sudo privileges
  • Tested on Debian 12, Ubuntu 22.04 or newer, and RHEL or clones like AlmaLinux or Rocky 9
  • Outbound internet access to download.docker.com

1) Remove any old packages (if present)

sudo apt remove -y docker docker-engine docker.io containerd runc || true
sudo dnf remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine || true

2) Install base dependencies

Debian or Ubuntu

sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
sudo install -m 0755 -d /etc/apt/keyrings

RHEL, AlmaLinux, or Rocky

sudo dnf -y install curl ca-certificates gnupg dnf-plugins-core

3) Add the official Docker repo and install

Debian or Ubuntu

Add the GPG key and the stable repo, then install.

curl -fsSL https://download.docker.com/linux/$(. /etc/os-release && echo $ID)/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/$(. /etc/os-release && echo $ID) $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Enable and start Docker.

sudo systemctl enable --now docker
sudo systemctl status docker --no-pager

RHEL, AlmaLinux, Rocky

Enable the repo and install.

sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker
sudo systemctl status docker --no-pager

4) Verify and run a first container

Check versions.

docker --version
docker compose version

Test with hello-world.

sudo docker run --rm hello-world

5) Post install: run Docker without sudo

Add your user to the docker group, start a new shell session, and retest.

sudo usermod -aG docker $USER
newgrp docker
docker run --rm hello-world

6) Quick example with Docker Compose

Create a test folder and a minimal docker-compose.yml for Nginx.

mkdir -p ~/compose-nginx && cd ~/compose-nginx
cat > docker-compose.yml <<'YAML'
services:
  web:
    image: nginx:stable
    ports:
      - "8080:80"
    restart: unless-stopped
YAML
docker compose up -d
docker compose ps

Open http://your-ip:8080 in a browser, then stop when done.

docker compose down

7) Updates

Debian or Ubuntu

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

RHEL, AlmaLinux, or Rocky

sudo dnf upgrade -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

8) Clean uninstall

Debian or Ubuntu

sudo apt purge -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo rm -rf /var/lib/docker /var/lib/containerd

RHEL, AlmaLinux, or Rocky

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

9) Quick troubleshooting

Docker service will not start

sudo journalctl -u docker -n 200 --no-pager
sudo systemctl restart docker

Permission denied on the Docker socket

groups
sudo usermod -aG docker $USER
newgrp docker

Port already in use

sudo ss -ltnp | grep :80
sudo ss -ltnp | grep :443

Conflict with another container engine

sudo systemctl stop podman
sudo systemctl disable podman
sudo systemctl restart docker

Summary

  • Official repositories added and Docker Engine installed
  • Docker service enabled at boot
  • Docker Compose plugin available
  • hello-world and Nginx compose example validated
  • Update, removal, and troubleshooting steps included

Join our Discord community server

For any questions, suggestions, or just to chat with the community, join us on Discord!

900+Members