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 simplednf install kernel-modules-extrapeut ne fournir les modules que pour un noyau plus récent, pas encore démarré — dans ce cas,modprobeéchoue avecModule xt_addrtype not foundjusqu’au redémarrage du système. Sidnfne trouve à l’inverse aucun paquet correspondant au noyau actuellement en cours d’exécution (par exemple après undnf updatepré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, viasystemd-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.