docker 容器,将网络更改为默认bridge网络
在大型政体内部局域网,项目上线后发现部分网段无法访问,仔细排查是局域网网段与docker内网网段重叠,导致应用无法访问。
一般每个单位都会预留docker使用的内部网络地址,可能不尽相同,假设为10.255.0.0/16
如果是项目较小,也没有docker内部网络隔离的需求,直接这么干:
1、配置bip,配置成 10.255.0.1/16
vim /etc/docker/daemon.json
2、编辑docker-compose.yml,删除已有网络,添加 network_mode: bridge 使用默认的bridge网络,
如果不配置任何网络,docker默认会以docker-compose.yml所在文件夹名称_default为名自动创建一个网络,所以必须指定network_mode: bridge。
version: "3.2"
services:
ABC:
image: ABC/ABC:latest
container_name: ABC
ports:
- "8088:80"
restart: always
network_mode: bridge
3、销毁并重建容器
docker compose down && docker compose up -d
4、重启docker
systemctl daemon-reload
systemctl restart docker
6、删除没用的网络,如果删不掉,说明对应的网络还在使用,排查容器
docker network ls
docker network rm NETWORKID/NAME
如果无法删除,排查使用了具体网络的容器有哪些
docker network inspect 网络名称 -f '{{range .Containers}}{{.Name}} {{end}}'
7、查看容器的ip地址是否已经和bridge网络一致
docker inspect 容器名 | grep IPAddress
8、查看主机除了物理网卡的地址路由,是不是只剩下bridge网段的路由
ip route show
使用 network_mode: bridge 配置有个不好的地方,和networks不能同时配置。
可以将已有ip段拆分为多个IP段,分别配置bip和自定义网络。
还有,如果已有网络、容器是无法修改ip的,只能删除重建,如果已经有容器,特别是用户创建的容器,需要谨慎。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术