安装完成Docker之后配置修改相关的内核参数

配置内核参数与开启包转发功能

1. 加载 br_netfilter 模块
  • 作用

    • br_netfilter 模块用于将桥接的网络流量转发至 iptables,从而让 Docker 的网络通信更顺畅。
  • 加载模块

    |-------------------------|
    | modprobe br_netfilter |
    | |

  • 验证模块是否加载成功

    |-----------------------------|
    | lsmod | grep br_netfilter |

    如果出现 br_netfilterbridge,说明加载成功。

  • 设置开机自动加载模块

    1. 创建文件 /etc/sysconfig/modules/br_netfilter.modules

      |--------------------------------------------------|
      | vi /etc/sysconfig/modules/br_netfilter.modules |

    2. 写入以下内容:

      |-------------------------------|
      | #!/bin/bash |
      | /sbin/modprobe br_netfilter |

    3. 赋予执行权限:

      |--------------------------------------------------------|
      | 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-iptablesnet.bridge.bridge-nf-call-ip6tables,在安装 Docker 后可能会遇到如下报错:

    |---------------------------------------|
    | bridge-nf-call-iptables is disabled |

    这会导致 Docker 的容器之间无法正常通信。

  • 如果未开启 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.m.daocloud.io", "https://gallery.ecr.aws", "https://docker.lmirror.top", "https://atomhub.openatom.cn", "https://docker.m.daocloud.io/", "https://huecker.io/", "https://dockerhub.timeweb.cloud", "https://noohub.ru/", "https://dockerproxy.com", "https://docker.mirrors.ustc.edu.cn", "https://docker.nju.edu.cn", "https://xx4bwyg2.mirror.aliyuncs.com", "http://f1361db2.m.daocloud.io", "https://registry.docker-cn.com", "http://hub-mirror.c.163.com" ], |

  • 重启 Docker 服务:

    |----------------------------|
    | systemctl restart docker |


总结

  1. 关键命令

    • 加载 br_netfilter 模块:

      |-------------------------|
      | modprobe br_netfilter |
      | |

    • 修改内核参数:

      |---------------------------------------|
      | sysctl -p /etc/sysctl.d/docker.conf |

    • 验证模块加载和内核参数:

      |--------------------------------------|
      | lsmod | grep br_netfilter |
      | sysctl -a | grep 'bridge\|forward' |

    • 配置镜像加速器:

      |---------------------------------------------|
      | { |
      | "registry-mirrors": ["https://<你的加速器地址>"] |
      | } |

  2. 注意事项

    • 在加载内核参数之前,必须先加载 br_netfilter 模块,否则会报错。
    • 修改内核参数后需要重启 Docker 服务,确保配置生效。
    • 配置镜像加速器后建议测试镜像拉取速度。
相关推荐
炸炸鱼.8 小时前
Kubernetes高级调度02:Taint/Toleration、Cordon/Drain、亲和性与反亲和性完全指南
云原生·容器·kubernetes
“码”力全开13 小时前
打破芯片与协议壁垒:基于 Docker + 边缘计算的 GB28181/RTSP 视频智能管理平台架构设计与源码交付方案
docker·音视频·边缘计算
geshifei14 小时前
K8s 容器运行 UnixBench — 代理机器执行记录
云原生·容器·kubernetes
Albert Edison16 小时前
【Docker】Ubuntu22.04 安装 Docker 教程
运维·docker·容器
AI服务老曹17 小时前
基于Docker的低代码AI视频管理平台架构解析:打通GB28181/RTSP多协议,支持异构边缘计算与全源码交付
人工智能·低代码·docker
codefan※17 小时前
一键部署私人 LLM:Ollama + Docker 极简指南
运维·docker·容器·大模型·llm·本地部署·ollama
李南想做条咸鱼18 小时前
k8s集群容器访问域名第一次不通,第二次必通如何解决
云原生·容器·kubernetes
FelixBitSoul19 小时前
K8s 调度器黑盒全拆解:拓扑约束数学陷阱 + Go 插件二开实战(避坑全记录)
容器·kubernetes
IT策士19 小时前
Docker 网络进阶:容器间通信与 DNS 解析
网络·docker·容器
热爱Liunx的丘丘人20 小时前
Docker Compose 实现 Nginx 与 MySQL 多容器服务编排
mysql·nginx·docker