安装完成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 服务:
    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 服务,确保配置生效。
    • 配置镜像加速器后建议测试镜像拉取速度。
posted @   皇帽讲绿帽带法技巧  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示