You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arch Linux全新安装Docker后无法启动docker.service问题求助

Arch Linux下Docker启动失败(iptables/内核相关报错)的排查与解决

问题场景

通过sudo pacman -S docker全新安装Docker后,执行sudo systemctl start docker.service启动服务失败,报错:

Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xeu docker.service" for details.

执行sudo systemctl status docker.service显示主进程退出码为1/FAILURE,journalctl -xeu docker.service提示Perhaps iptables or your kernel needs to be upgraded.。已通过sudo pacman -Syu更新系统、安装Arch LTS内核,当前iptables版本为iptables v1.8.9 (legacy),问题仍未解决,怀疑系统存在配置缺失。


排查与解决步骤

一、切换iptables后端为nftables

Docker默认适配nftables后端,而legacy模式可能存在兼容性问题:

  • 确认当前后端:iptables --version
  • 安装nftables适配包:sudo pacman -S iptables-nft
  • 设置默认iptables后端:
    sudo update-alternatives --set iptables /usr/sbin/iptables-nft
    sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-nft
    
  • 重启Docker服务:sudo systemctl restart docker.service

二、加载Docker必需的内核模块

Docker依赖overlay和br_netfilter模块,检查并加载:

  • 查看模块状态:lsmod | grep -E 'overlay|br_netfilter'
  • 手动加载缺失模块:
    sudo modprobe overlay
    sudo modprobe br_netfilter
    
  • 设置开机自动加载:编辑/etc/modules-load.d/docker.conf,添加:
    overlay
    br_netfilter
    

三、配置网络内核参数

确保网络相关内核参数符合Docker要求:

  • 编辑/etc/sysctl.d/docker.conf,添加:
    net.bridge.bridge-nf-call-iptables = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    net.ipv4.ip_forward = 1
    
  • 应用配置:sudo sysctl --system
  • 重启Docker服务:sudo systemctl restart docker.service

四、检查系统基础配置完整性

针对"每次安装新包启动服务都出问题"的情况:

  • 确认当前运行LTS内核:uname -r,输出需包含lts字段
  • 检查损坏包并修复:
    sudo pacman -Qkk  # 检查包完整性
    sudo pacman -S --overwrite '*' <损坏包名>  # 修复指定损坏包
    
  • 重载systemd配置:sudo systemctl daemon-reload,再尝试启动Docker

内容的提问来源于stack exchange,提问作者Priyanshu Jha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 17:42:08