问题描述:多个docker通过overlay网络连接,docker容器需要访问外部的Redis和MySQL服务。docker服务刚启动时各个服务之间是可以正常访问,但是再过一段时间后,docker容器之间无法访问,容器内服务也无法访问Redis和MySQL,进入容器也不能ping通,重启之后解决。
前提条件:服务器防火墙已经关闭
参考:
Docker容器端口映射后突然无法连接的排查过程_安科网www.ancii.com问题解决:
echo
问题分析:
文章里说,systemctl restart network.service会修改ip_forward的值导致,一开始docker启动时 ip_forward的值是1,这个可以通过 sysctl net.ipv4.ip_forward 这条命令验证,但是在restart network后,这个值就变成了0,实验后符合。这里想起来了,之前这台机器只有docker是没有问题的,后面装了Hadoop和spark后这个问题出现了。
ip转发原理:
参考:
CSDN-专业IT技术社区-登录blog.csdn.net出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将包发往本机另一网卡,该网卡根据路由表继续发送数据包。这通常就是路由器所要实现的功能。