Docker Fails to Start on EL10
The minimal and cloud images of RHEL, AlmaLinux and Rocky Linux 10 (EL10) lack a kernel module package that Docker requires for its network setup — in this case Docker does not start, and the Relution installation cannot continue. This guide describes how to install the missing package before the first Docker start.
Problem
The minimal and cloud images of RHEL, AlmaLinux and Rocky Linux 10 are missing the kernel-modules-extra package. Without this package, iptables cannot load the kernel module xt_addrtype, which Docker needs for its bridge and NAT setup. The Docker service then fails to start and aborts with the following message:
failed to add jump rules to ipv4 NAT table: ... xt_addrtype
The output of systemctl status docker often shows only the follow-up error Start request repeated too quickly — the actual cause appears in journalctl -xeu docker.service.
Solution
The following steps are performed before the first start of Docker:
# 1. Install the module package matching the RUNNING kernel
sudo dnf install -y "kernel-modules-extra-$(uname -r)"
# 2. Load the modules
sudo modprobe xt_addrtype br_netfilter ip_tables
# 3. Make them persistent – loaded automatically on every boot
echo -e "xt_addrtype\nbr_netfilter\nip_tables" | sudo tee /etc/modules-load.d/docker.conf
# 4. Start Docker
sudo systemctl reset-failed docker.service
sudo systemctl enable --now docker
Why These Two Points Matter
- Installing the versioned package (
kernel-modules-extra-$(uname -r)): ensures that the modules match the currently running kernel. A plaindnf install kernel-modules-extramay provide the modules only for a newer, not-yet-booted kernel — in which casemodprobefails withModule xt_addrtype not founduntil the system is rebooted. Ifdnfinstead reports no matching package for the currently running kernel (e.g. after a priordnf updatewithout a reboot), a reboot onto the most recently installed kernel is required before rerunning the command. /etc/modules-load.d/docker.conf: usessystemd-modules-load.serviceto ensure the modules are loaded automatically on every reboot. Without this file, the fix would be lost again after the next reboot.
Verifying That It Worked
sudo modprobe xt_addrtype && echo "OK – module loadable"
sudo systemctl is-active docker
sudo docker run --rm hello-world
If modprobe returns no error, the service reports active, and the test container prints Hello from Docker!, the step is complete.