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 plain dnf install kernel-modules-extra may provide the modules only for a newer, not-yet-booted kernel — in which case modprobe fails with Module xt_addrtype not found until the system is rebooted. If dnf instead reports no matching package for the currently running kernel (e.g. after a prior dnf update without a reboot), a reboot onto the most recently installed kernel is required before rerunning the command.
  • /etc/modules-load.d/docker.conf: uses systemd-modules-load.service to 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.

Top