docker容器启动使用桥接模式无法上网问题排查

docker容器启动使用桥接模式无法上网问题排查

1 问题描述

最近公司在搞CICD持续集成、持续交付,期间遇到过这样一种问题:GitLab Runner配置docker时设置limit=5、request_concurreny=5将任务的执行设置为并发执行,network_mode设置为host模式。
这样就会有问题存在了,其中一个任务需要启动PG,在任务并行执行时会存在端口冲突问题导致任务执行失败。当时的解决办法是limit和request_concurrency都设置成1让任务串行执行。
但这样的方式在少数任务执行影响并不大,直到有次submit时需要对所有服务都进行构建,导致串行执行时很多任务都处于pending状态,效率大打折扣。无奈,只能排查桥接为什么不能访问外网?

2 问题定位

刚开始排查时一直以为是要改GitLab Runner配置,想着是不是在配置里加上端口映射或者某个配置应该会解决问题。却忽视了问题的本质,导致排查时间过长仍没有找到解决办法(垃圾ChatGPT也顺着我的提问回答,误导我)。
其实问题的本质很容易找,job执行的时候使用的是容器,而改成桥接模式后容器无法联网,显而易见是docker的问题。

3 解决方法

定位到问题的根源后百度就很好找到答案了,最终找到了这个老哥的文章解决了。根本原因是容器采用桥接模式后需要开启转发,否则容器启动后,会没有网络

解决办法:配置/etc/sysctl.conf,添加net.ipv4.ip_forward=1即可,具体如下:

1. vim /etc/sysctl.conf修改net.ipv4.ip_forward配置
2. 添加一行:net.ipv4.ip_forward=1
3. 重启服务,让配置生效
systemctl restart network
4. 查看是否成功,如果返回为“net.ipv4.ip_forward = 1”则表示成功
sysctl net.ipv4.ip_forward
5. 重启docker
service docker restart

参考文章

Docker之WARNING: IPv4 forwarding is disabled. Networking will not work(虚拟机配置网络异常:IPv4)解决方案

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值