Objectifs

  • Installer Docker Engine depuis le dépôt officiel
  • Activer le plugin Docker Compose
  • Lancer un premier conteneur de test
  • Gérer les droits utilisateurs et le démarrage automatique
  • Mettre à jour, désinstaller et dépanner

Prérequis

  • Accès SSH avec privilèges sudo
  • Systèmes testés: Debian 12, Ubuntu 22.04 ou plus récent, RHEL/AlmaLinux/Rocky 9
  • Connexion internet sortante vers download.docker.com

1) Nettoyer les anciennes versions si présentes

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) Installer les dépendances de base

Debian ou Ubuntu

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

RHEL/AlmaLinux/Rocky

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

3) Ajouter le dépôt Docker officiel et installer

Debian ou Ubuntu

Ajouter la clé GPG et le dépôt stable.

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

Démarrer et activer Docker.

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

RHEL, AlmaLinux, Rocky

Activer le dépôt et installer.

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) Vérifier l’installation et tester un conteneur

Vérifier les versions.

docker --version
docker compose version

Tester avec l’image hello-world.

sudo docker run --rm hello-world

5) Post-installation: exécuter Docker sans sudo

Ajoutez votre utilisateur au groupe docker, ouvrez une nouvelle session de shell et retestez.

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

6) Exemple rapide avec Docker Compose

Créez un dossier de test et un fichier docker-compose.yml minimal pour 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

Ouvrez http://votre-ip:8080 dans un navigateur, puis stoppez si besoin.

docker compose down

7) Mises à jour

Debian/Ubuntu

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

RHEL/AlmaLinux/Rocky

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

8) Désinstallation propre

Debian/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/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) Dépannage rapide

Service Docker ne démarre pas

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

Permission denied sur la socket

groups
sudo usermod -aG docker $USER
newgrp docker

Port déjà utilisé par un autre service

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

Conflit avec un autre moteur de conteneur

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

Résumé

  • Dépôts officiels ajoutés et Docker Engine installé
  • Service docker activé au démarrage
  • Plugin Docker Compose prêt à l’emploi
  • Exemples hello-world et Nginx pour valider
  • Procédure de mise à jour, suppression et dépannage incluse