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