解决 docker 和 docker-compose 和内网 IP 冲突问题
前言
docker 一键部署爽,内网冲突火葬场。最近实施去客户那边调试,某个屋的设备可以连上网关,而某个屋的设备都不行,找了半天没有找到原因,于是晚上直接一个电话敲到了我这里,让我帮忙康康
寻找原因
之前也遇到过了这种情况,简单排除掉了物联网设备那边的网关设置问题,马上想到了 docker 的问题,docker network ls 一看,发现 docker 和 docker-compose 占用的客户的地址,客户使用了 172.0.0.0/8 做为内网地址(不是很标准的做法,但是很常见),docker 占用了 172.17.0.0/16 作为桥接地址,docker-compose 跑了个 Harbor ,把 172.18.0.0/16 也给占了,物联网设备那边的网关下一跳是 172.18.12.1 ,于是华丽丽的冲突了,物联网路由访问咱们网关机器不通,于是连接不上
修改 Docker 桥接网段
非常简单,有个 bip
的设置
vim /etc/docker/daemon.json
"bip":"10.255.0.1/16" |
注意 json 文件的格式不要整错,尤其要注意花括号和逗号,不要打多或者打少(所以我并不喜欢用 json 做配置文件,ini 要好很多,哪怕是吃缩进的 yaml 也好啊),然后 systemctl restart docker
搞定
修改 docker-compose 桥接网段
这个稍微复杂一些,这台机器 docker-compose 的是 Harbor ,我们就用它做例子
首先需要手动创建一个 docker 桥接网段
docker network create harbor2 --subnet=10.254.0.0/16 |
然后修改 Harbor 的 docker-compose.yml 文件,让它使用咱们创建的这个网络
# 这个是之前的 |
这样就解决了 docker 和 docker-compose 的网段冲突问题~
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LuckyBlogV3!
评论