Docker 网络 IP 地址冲突了的解决方案

1、前置知识

在网络通信中,由于交换机能力的限制和网线长度的物理约束,不可能将所有主机连接到同一个交换机上,并处于同一个二层网络中。此外,主机间的 ARP 广播会导致网络瘫痪。因此,需要将主机拆分到多个子网中,然后通过路由器组成三层网络。

IP 地址由网络地址和主机地址两部分组成。例如,在 10.0.0.1/8 中,10 是网络地址,0.0.1 是主机地址。子网掩码(如 /8)用于区分这两部分。IP 地址实际上是由 32 位二进制组成,x.x.x.x 格式只是为了方便人类阅读而转换成十进制。例如,/8 表示第一段是网络地址,/16 表示前两段是网络地址。

2、问题表现
  • Docker 进程无法启动
  • 容器端口无法访问,抓包显示有入站但没有出站
3、排查

如果你遇到的是 dockerd 无法启动的情况,可以尝试以下排查方法:

  1. 查看日志

    通常可以在日志中看到类似如下的错误信息(具体日志内容根据实际情况而定):

    Error starting daemon: Error initializing network controller: Error creating default "bridge" network: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
    
  2. 手动启动 dockerd

    通过查看 Docker 服务的启动命令来进行手动启动。可以使用以下命令查看:

    grep ExecStart /usr/lib/systemd/system/docker.service
    

    通常会看到类似如下的输出:

    ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    

    然后手动启动 dockerd

    /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    

    在输出中,你可能会看到错误信息提示无法创建 docker0 网桥。

  3. 检查网络接口

    使用 ip addr 命令查看网络接口,确认是否存在 docker0docker_gwbridge。如果缺少 docker0,基本可以确定是 docker0 无法创建导致 dockerd 启动失败。

4、解决

找到并解决网段冲突问题是关键。

  1. 找到占用的网段

    默认的 docker0 网段是 172.17.0.0/16docker_gwbridge 网段是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值