You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker报错default-address-pools未识别,求默认网段配置解决方案

解决Docker daemon.json中"default-address-pools"配置报错的问题

嗨,我之前也碰到过一模一样的问题!核心原因其实很直白:你当前用的Docker版本(17.12.0-ce)根本不支持default-address-pools这个配置项。这个特性是在Docker 18.06.0-ce版本才正式引入的,旧版本识别不了这个指令,自然会抛出配置不匹配的错误。

下面给你两种可行的解决方案,你可以根据自己的需求选:

方案一:升级Docker到支持特性的版本

这是最推荐的方式,不仅能解决当前问题,还能拿到更多新功能和安全更新:

  1. 先卸载旧版本的Docker组件:
sudo apt-get remove docker docker-engine docker.io containerd runc
  1. 配置Docker官方软件源:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. 安装最新版Docker CE:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
  1. 验证升级后的版本:
docker --version
  1. 保留你原来的daemon.json配置,重启Docker服务:
sudo systemctl restart docker

这时候再检查Docker状态,应该就能正常启动了,default-address-pools的配置也会生效。

方案二:不升级,用旧方法自定义网段

如果你暂时不想升级Docker,可以用传统的自定义网桥方式来指定网段:

方式1:修改默认网桥的网段

  1. 先停止Docker服务:
sudo systemctl stop docker
  1. 删除默认的docker0网桥:
sudo ip link delete docker0
  1. 修改/etc/docker/daemon.json为以下内容(以你想要的172.80.0.0/16网段为例):
{
  "bip": "172.80.0.1/24",
  "dns": ["8.8.8.8", "8.8.4.4"]
}
  1. 重启Docker服务:
sudo systemctl restart docker

方式2:手动创建多网段网桥(对应原配置的local/global)

如果需要多个网段,你可以手动创建自定义网桥,然后在docker-compose中指定使用:

  1. 创建本地网桥:
docker network create --driver bridge --subnet 172.80.0.0/16 --gateway 172.80.0.1 local-net
  1. 创建全局overlay网桥(需要Docker Swarm模式):
docker swarm init
docker network create --driver overlay --subnet 172.90.0.0/16 --gateway 172.90.0.1 global-net
  1. 在你的docker-compose.yml中指定使用这些外部网桥:
version: '3'
services:
  your-service-name:
    image: your-image:tag
    networks:
      - local-net

networks:
  local-net:
    external: true

注意:这种旧方法的灵活性不如default-address-pools,它不能自动分配多个子网段,只能手动管理,所以如果有大量容器需要不同子网,升级Docker会更省心。

内容的提问来源于stack exchange,提问作者Moisei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:24:07