← 返回幫助中心

Docker 网络 MTU 设置为 1450 教程

2026-10-22 10 次瀏覽

方法一:安装 Docker 前配置 MTU

推荐在新装 Docker 时使用此方法。

步骤一:创建 Docker 配置目录

sudo mkdir -p /etc/docker

步骤二:创建配置文件

sudo tee /etc/docker/daemon.json > /dev/null <<'EOF'
{
  "mtu": 1450
}
EOF

该配置用于设置 Docker 默认 bridge 网络的 MTU。

注意: 如果 /etc/docker/daemon.json 已经存在,请先备份,并将 mtu 字段合并到原有 JSON 配置中,不要直接覆盖原配置。

步骤三:安装 Docker

按照 Docker 官方安装文档安装 Docker Engine:

https://docs.docker.com/engine/install/

安装程序启动 Docker 时,会读取 /etc/docker/daemon.json 中的配置。

如果安装程序已经启动 Docker,安装完成后可按后文的方法重启 Docker,并检查网络配置。


方法二:修改已安装 Docker 的 MTU

适用于 Docker 已经安装并运行的 VPS。

步骤一:备份现有配置

sudo mkdir -p /etc/docker

if [ -f /etc/docker/daemon.json ]; then
  sudo cp /etc/docker/daemon.json \
    /etc/docker/daemon.json.bak
fi

步骤二:编辑配置文件

sudo nano /etc/docker/daemon.json

如果原文件不存在,填写:

{
  "mtu": 1450
}

如果原文件已经包含其他配置,例如:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m"
  }
}

则合并为:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m"
  },
  "mtu": 1450
}

注意 JSON 格式必须正确,不能出现多余的逗号,也不能重复定义同一个配置键。

步骤三:验证配置文件

sudo dockerd --validate \
  --config-file=/etc/docker/daemon.json

如果当前 Docker 版本支持该参数,且配置正确,应显示配置验证成功。

步骤四:重启 Docker

sudo systemctl restart docker

检查 Docker 服务状态:

sudo systemctl status docker --no-pager

如果服务启动失败,查看日志:

sudo journalctl -u docker -n 100 --no-pager

重要: 重启 Docker 可能影响正在运行的容器和业务。生产环境操作前应做好备份并安排维护窗口。


验证 Docker 默认网络 MTU

步骤一:检查宿主机网卡

ip -br link

找到实际使用的网卡,例如 eth0、ens3,然后执行:

ip link show dev eth0

将 eth0 替换为实际网卡名称。

步骤二:检查 Docker 默认网桥

ip link show docker0

确认输出中的 mtu 是否为 1450。

步骤三:检查 Docker 网络配置

docker network inspect bridge \
  --format '{{json .Options}}'

该命令用于查看默认 bridge 网络的选项。部分 Docker 版本或配置下,Options 中不一定直接显示 mtu,因此还需要检查实际网桥和容器网卡。

步骤四:检查容器网卡 MTU

启动一个临时测试容器:

docker run --rm alpine \
  sh -c 'ip link show eth0'

如果镜像中没有 ip 命令,可以使用:

docker run --rm alpine sh -c \
  'apk add --no-cache iproute2 >/dev/null && ip link show eth0'

查看输出中 eth0 的 mtu 是否为 1450。

如果测试容器显示的 MTU 仍然是 1500,应检查容器连接的网络类型、网络创建时间及对应网络驱动的配置。


自定义 Docker bridge 网络的 MTU 配置

daemon.json 中的 mtu 主要用于 Docker 默认 bridge 网络。对于自定义 bridge 网络,建议在创建网络时显式指定 MTU。

方法一:使用 Docker 命令创建网络

docker network create \
  --driver bridge \
  --opt com.docker.network.driver.mtu=1450 \
  mynet

查看配置:

docker network inspect mynet \
  --format '{{json .Options}}'

方法二:使用 Docker Compose

在 compose.yaml 中配置:

services:
  app:
    image: nginx:alpine
    networks:
      - app_net

networks:
  app_net:
    driver: bridge
    driver_opts:
      com.docker.network.driver.mtu: "1450"

启动服务:

docker compose up -d

检查网络和容器网卡,确认实际 MTU 为 1450。

注意: 修改配置不会自动修改已经创建的自定义网络。已有网络需要在评估业务影响后重新创建,并重新连接相关容器。

上一篇 下一篇