Docker ne démarre pas sur EL10

Les images minimales et cloud de RHEL, AlmaLinux et Rocky Linux 10 (EL10) ne contiennent pas un paquet de modules du noyau dont Docker a besoin pour sa configuration réseau — dans ce cas, Docker ne démarre pas et l’installation de Relution ne peut pas se poursuivre. Ce guide décrit comment installer le paquet manquant avant le premier démarrage de Docker.


Problème

Les images minimales et cloud de RHEL, AlmaLinux et Rocky Linux 10 ne contiennent pas le paquet kernel-modules-extra. Sans ce paquet, iptables ne peut pas charger le module du noyau xt_addrtype, dont Docker a besoin pour sa configuration de pont (bridge) et de NAT. Le service Docker ne démarre alors pas et s’interrompt avec le message suivant :

failed to add jump rules to ipv4 NAT table: ... xt_addrtype

La sortie de systemctl status docker n’affiche souvent que l’erreur consécutive Start request repeated too quickly — la cause réelle apparaît dans journalctl -xeu docker.service.


Solution

Les étapes suivantes sont exécutées avant le premier démarrage de Docker :

# 1. Installer le paquet de modules correspondant au noyau EN COURS
sudo dnf install -y "kernel-modules-extra-$(uname -r)"

# 2. Charger les modules
sudo modprobe xt_addrtype br_netfilter ip_tables

# 3. Rendre persistant – chargés automatiquement à chaque démarrage
echo -e "xt_addrtype\nbr_netfilter\nip_tables" | sudo tee /etc/modules-load.d/docker.conf

# 4. Démarrer Docker
sudo systemctl reset-failed docker.service
sudo systemctl enable --now docker

Pourquoi ces deux points sont importants

  • Installer la version correspondante (kernel-modules-extra-$(uname -r)) : garantit que les modules correspondent au noyau actuellement en cours d’exécution. Un simple dnf install kernel-modules-extra peut ne fournir les modules que pour un noyau plus récent, pas encore démarré — dans ce cas, modprobe échoue avec Module xt_addrtype not found jusqu’au redémarrage du système. Si dnf ne trouve à l’inverse aucun paquet correspondant au noyau actuellement en cours d’exécution (par exemple après un dnf update préalable sans redémarrage), un redémarrage sur le noyau le plus récemment installé est nécessaire avant de relancer la commande.
  • /etc/modules-load.d/docker.conf : garantit, via systemd-modules-load.service, que les modules sont chargés automatiquement à chaque redémarrage. Sans ce fichier, le correctif serait à nouveau perdu après le prochain redémarrage.

Vérifier que cela a fonctionné

sudo modprobe xt_addrtype && echo "OK – module chargeable"
sudo systemctl is-active docker
sudo docker run --rm hello-world

Si modprobe ne renvoie aucune erreur, que le service indique active et que le conteneur de test affiche Hello from Docker!, l’étape est terminée.

Top