CentOS 7启动时自动加载自定义内核模块
CentOS 7 启动时自动加载**,这是非常合理的做法——这样能确保 Docker 每次启动前,内核网络模块都已就绪,避免端口映射失败。
方式一:写入 /etc/modules-load.d/ 自动加载配置
CentOS 7 使用 systemd,官方推荐做法是通过 modules-load.d:
1.1创建配置文件:
1 | sudo vi /etc/modules-load.d/docker-net.conf |
1.2写入以下内容:
br_netfilter
ip_tables
xt_nat
1.3保存退出,然后立即加载一次:
1 | sudo systemctl restart systemd-modules-load |
1.4验证:
1 | lsmod | grep -E 'br_netfilter|ip_tables|xt_nat' |
💡 效果:
系统每次启动时,systemd-modules-load 会自动加载这些模块。
方式二:使用 /etc/rc.local(传统兼容方案)
2.1编辑文件:
1 | sudo vi /etc/rc.d/rc.local |
2.2在 exit 0 前加入:
1 | modprobe br_netfilter |
2.3确保 rc.local 可执行:
1 | sudo chmod +x /etc/rc.d/rc.local |
方式三:写入 /etc/sysconfig/modules/(RHEL/CentOS 老方法)
3.1新建脚本:
1 | sudo vi /etc/sysconfig/modules/docker-net.modules |
3.2写入:
1 |
|
3.3赋予执行权限:
1 | sudo chmod +x /etc/sysconfig/modules/docker-net.modules |
💡 该目录下的 .modules 文件会在启动阶段自动执行,非常适合内核模块初始化。
4验证自动加载是否生效
重启系统后执行:
1 | sudo reboot |
若都在列表中,即说明生效。