安装完成Docker之后配置修改相关的内核参数
配置内核参数与开启包转发功能
1. 加载 br_netfilter
模块
- 作用:
br_netfilter
模块用于将桥接的网络流量转发至iptables
,从而让 Docker 的网络通信更顺畅。
- 加载模块:
modprobe br_netfilter - 验证模块是否加载成功:
如果出现lsmod | grep br_netfilter br_netfilter
和bridge
,说明加载成功。 - 设置开机自动加载模块:
- 创建文件
/etc/sysconfig/modules/br_netfilter.modules
:vi /etc/sysconfig/modules/br_netfilter.modules - 写入以下内容:
#!/bin/bash /sbin/modprobe br_netfilter - 赋予执行权限:
chmod +x /etc/sysconfig/modules/br_netfilter.modules
- 创建文件
2. 修改内核参数
- 创建配置文件:
vi /etc/sysctl.d/docker.conf - 写入以下内容:
net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-iptables
:允许桥接流量通过iptables
。net.bridge.bridge-nf-call-ip6tables
:允许桥接流量通过ip6tables
。net.ipv4.ip_forward
:启用 IPv4 数据包转发功能。
- 加载内核参数使其生效:
确保不会报错,否则需要检查是否提前加载了sysctl -p /etc/sysctl.d/docker.conf br_netfilter
模块。
3. 为什么需要这些参数
- 如果未开启
net.bridge.bridge-nf-call-iptables
或net.bridge.bridge-nf-call-ip6tables
,在安装 Docker 后可能会遇到如下报错:
这会导致 Docker 的容器之间无法正常通信。bridge-nf-call-iptables is disabled - 如果未开启
net.ipv4.ip_forward
,当 Linux 主机有多个网卡时,数据包无法在不同网卡之间转发,也可能无法从外部访问 Docker 容器。
验证配置
1. 验证内核参数
- 查看内核参数是否生效:
sysctl -a | grep 'bridge\|forward' - 检查关键参数是否为
1
:net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1
2. 重启 Docker 并检查状态
- 重启 Docker 服务:
systemctl restart docker - 检查 Docker 状态是否正常:
如果状态为systemctl status docker Active (Running)
,说明正常。
配置永久加载模块
1. 开机自动加载模块
- 在
/etc/modules-load.d
下创建文件:vi /etc/modules-load.d/br_netfilter.conf - 写入模块名称:
br_netfilter - 保存后,重启主机时该模块会自动加载。
2. 设置自动生效的内核参数
- 内核参数已写入
/etc/sysctl.d/docker.conf
文件,重启时会自动加载。
配置镜像加速器
1. 原因
- 默认情况下,Docker 从官方 Docker Hub 拉取镜像,但由于网络原因,速度可能非常慢。
- 配置国内镜像加速器(如阿里云)可以大幅提升拉取镜像的速度。
2. 步骤
- 创建或编辑文件
/etc/docker/daemon.json
:vi /etc/docker/daemon.json - 写入以下内容(示例使用阿里云镜像加速器):
{ "registry-mirrors": ["https://<你的阿里云加速器地址>"] } - 重启 Docker 服务:
systemctl restart docker
总结
-
关键命令
- 加载
br_netfilter
模块:modprobe br_netfilter - 修改内核参数:
sysctl -p /etc/sysctl.d/docker.conf - 验证模块加载和内核参数:
lsmod | grep br_netfilter sysctl -a | grep 'bridge\|forward' - 配置镜像加速器:
{ "registry-mirrors": ["https://<你的加速器地址>"] }
- 加载
-
注意事项
- 在加载内核参数之前,必须先加载
br_netfilter
模块,否则会报错。 - 修改内核参数后需要重启 Docker 服务,确保配置生效。
- 配置镜像加速器后建议测试镜像拉取速度。
- 在加载内核参数之前,必须先加载
迷茫的人生,需要不断努力,才能看清远方模糊的志向!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?