【docker默认网段与主机网段冲突导致服务器崩溃解决办法】

文章介绍了Docker的三种网络模式——bridge、host和none,强调了bridge模式下的默认网络配置可能引起IP冲突。为解决这个问题,文章提出了修改Docker默认网卡docker0的IP分配网段,通过编辑daemon.json文件以及调整docker-compose配置来避免冲突。此外,还详细说明了如何删除和重置docker网络以适应自定义的网络设置。
  1. 查看docker网络

在这里插入图片描述
可以发现有三种模式:birdge、host、null。
bridge:桥接模式,此模式下容器可以通过Docker0网卡和外网通信,也可以和宿主机的其他容器进行通信,但是不能和其他主机的容器进行通信,因为可以会造成ip地址冲突,此模式是docker的默认网络模式
host:仅主机模式,此模式下容器会跟宿主机共享网络地址
none:这个模式没有任何网络,此模式下容器不可以跟其他任何主机或容器进行通信,只有一个lo网卡,地址是127的回环地址

  • 每个容器都有ip,而这个ip是由Docker生成的Docker0网卡分配的,默认分配的网段就是172.17.0.0/16的网段,这个网段是可以自定义的,并且只有容器是bridge模式时,会自动分配
    docker0 ip
    在这里插入图片描述
    容器 ip:(docker inspect 容器id),可以看到也是172网段,并且指向docker0网卡
    在这里插入图片描述
    3. 解决方式
    docker默认网卡docker0 172.17.0.1可能会与主机冲突(会导致宿主机崩溃,亲身经历),这时候需要修改docker默认分配的网段

  • 修改/etc/docker/daemon.json文件,加入以下代码(没有该文件就手动创建一个),182是我自定义的,自定义的网段要确保宿主机没有使用。
    在这里插入图片描述

  • 删除docker0
    在这里插入图片描述

  • 删除完docker0后正常是重启docker即可,但是如果用docker-compose启动容器,并且docker-compose.yml有指定network,在启动过程容器同样会建立172.17.0.0类似的网络地址,可能还是会与主机冲突,这时候我们使用以下方法修改默认的网段

  • 查看当前有docker建立的网络名称
    在这里插入图片描述
    从上面可以看出docker建立了6个bri
    dge虚拟网卡,除了name为bridge外,其余都是docker-compose启动后建立的,我们只需要修改这些网络分配的网络地址即可

  • 停止并删除现有的docker容器
    在这里插入图片描述
    在这里插入图片描述

  • 删除上面的5个bridge网卡(举例一个)
    在这里插入图片描述

  • 为上面虚拟网卡重新指定网段(举例一个)
    在这里插入图片描述

  • 最后重启docker即可
    systemctl stop docker / systemctl start docker

  • 重启完成后通过 ip a (或者 ifconfig)命令就可以看到改变后的网段了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值