乐趣区

关于docker:为什么docker-网段冲突会和宿主机冲突原因分析和解决方案

seo 优化:

  • 为什么 docker-compose 网段抵触会和宿主机抵触?然而间接应用 docker 不会抵触?
  • docker 网段抵触了怎么办?
  • docker 默认网段和主机网段抵触解决
  • 原本好好的,新开了一个容器之后,忽然无奈登录虚拟机(宿主机),如同是 docker 网段抵触怎么办?

答复这个问题前,倡议先看上面两篇文章:
docker0 和 br-xxxxxx 有什么区别?
为什么 docker-compose 创立的网络模式为什么不在 docker 四大类型中?

私网地址是:A 类地址:10.0.0.0~10.255.255.255. B 类地址:172.16.0.0 ~172.31.255.255. C 类地址:192.168.0.0~192.168.255.255

起因剖析:

docker 的虚构网卡网段应用的是『B 类地址』

如果是个人电脑,咱们宿主机个别都是 192.168.xxx.xxx

所以,默认状况下,所有相安无事。

所以,如果你遇到抵触,个别是这样:所有都好好的,然而忽然,无奈登录主机了,连 ping 都 ping 不通

为什么呢?很简略,172 结尾的网段被用完了,docker 就去进犯 192.168 了

然而咱们的宿主机用的网段就是 192.168,所以网段抵触,咱们无奈登录宿主机

你可能有疑难,172 能够调配超级多的 ip,怎么就用完了?因为每跑一个 docker-compose.yaml 都是要创立一个 br 结尾的虚构网卡的,分走一个 172.xxx。因为 B 类地址范畴是 172.16.0.0 ~172.31.255.255, 所以 172 结尾的最多只能跑 15 个 docker-compose.yaml
当你需要太旺盛,一下子跑了 n 个 docker-compose.yaml,就可能导致 B 类地址被用完
最恶心的是,你执行 docker-compose down 之后,有些虚构网卡不会被卸载,导致始终占用,所以并不是『同时 15 个把 B 类地址榨干』,而是『与日俱增,把 B 类地址榨干』

从此处能够看到,docker0 用的是 172.17.0.1

其余的 br 结尾的都是 docker-compose 创立的虚构网卡,也是 172.xxx.0.1

然而因为我的这个机器是开发测试机器,所以咱们会在下面运行 n 个 docker-compose.yaml

这久导致 172 的网段用完了,172 用完了,docker-compose 就去应用 192.168 结尾的了,应用 192.168.16.1 的时候,就和我宿主机的 192.168.38.1 抵触了。

为什么这两个 192.168 结尾的会抵触,和子网掩码长度有关系,一个是 192.168.16.1/20,另一个是 192.168.38.191/24


退出移动版