装Docker时请特别留意这个内核即容器中不能访问宿主机网络问题记录

29 篇文章 0 订阅

内核版本:3.10.0-123.el7.x86_64。

是它是它就是它,又是一个小冤家.

自从发现了简单安装Docker的方式,想着就不用苦逼的一个一个下载rpm安装了...就可以一边哼着歌一边把原来一天才能干完的活压缩到半天了.也的确有几次是这么爽的,但今天爽歪了。

像往常一样把Docker服务安装好,把需要的镜像从外网传到内网再load,再启动redis,mysql等项目需要的容器。真是一顿操作猛如虎,还带丝般顺滑。可应该怎么也启动不起来,查看日志是说链接不上MySql.去MySql容器中查看mysql服务是正常的,刚才还新建了数据库表的。难道启动容器时忘记添加-p参数或者端口映射错误了?赶紧检查下:

tianlang@tianlang-VirtualBox:~$ docker ps
CONTAINER ID   IMAGE                             COMMAND                  CREATED        STATUS        PORTS                                                      NAMES
d4217fc419fd   daocloud.io/library/redis:5.0.4   "docker-entrypoint.s…"   4 months ago   Up 23 hours   0.0.0.0:6379->6379/tcp                                     redis
5855a5f7ec9a   mysql:8                           "docker-entrypoint.s…"   4 months ago   Up 23 hours   0.0.0.0:13306->3306/tcp                                    mysql8

从docker ps信息可以看到容器时做了端口映射了的,端口也是正确的。难道是端口冲突映射时失败了?赶紧再检查下:            
tianlang@tianlang-VirtualBox:~$ sudo netstat -anp|grep 13306
tcp        0      0 0.0.0.0:13306           0.0.0.0:*               LISTEN      1785/docker-proxy  

从netstat输出信息看端口也的确是docker监听了的。就是这么奇怪,什么看上去都正常但就是不能在宿主机上访问容器中的mysql.只有mysql容器是这样的吗?很遗憾redis也存在同样的问题,就是这么不幸。

看来是docker服务有问题了,尝试了使用rpm包重装,重启iptables,关闭防火墙,关闭selinux等等,一顿折腾,连不通的还是连不通。几近要放弃的时候,找到了这篇博客:Docker网桥模式ping不通宿主机  

博主刚开始也是一通折腾,后来确定是docker创建网桥时遇到了系统Bug,同时天涯踩Bug人啊!可以升级内核解决也可以使用brctl自己创建网桥分配给docker使用。

客户的机器升级内核不太可能了,只能尝试使用brctl创建网桥尝试最后一下子了.

1.关闭docker服务,添加网桥br0:

service docker stop //或者systemctl stop docker
brctl addbr br0

2.为网桥添加IP

ip addr add 172.16.0.1/24 dev br0

3.启用网桥br0

ip link set dev br0 up

4.修改docker默认网桥

在文件/etc/docker/daemon.json中添加:

{"bridge":"br0"}

5.启动docker服务

service docker start

6.重新创建新的容器测试

新创建的容器可以正常使用了.删掉原来的容器重新创建,也都可以正常使用了。要是一开始就先测试下宿主机能不能正常连通docker容器就可以少做些无用功了,草率了!!

博主文章中还记载了调试iptables等方法,这里就不再赘述了!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个不安分的程序员

祝您财源广进

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值