在服务器上新跑了一个mysql容器,用-p将3306映射到宿主机的33306, 结果发现我从本地无法连接过去,排查了一下原因。
-
首先从服务器上telnet 33306, 没有问题, 换了一台机器再试,不行了 不过至少证明33306是开放的,问题不在容器里
-
怀疑防火墙,不过这台机器ufw是关的,也没有安装firewalld, 这锅甩不过去
-
搜索了下,说有个内核层的 ip4_packet_forwarding要设成1, 一看也确实是1, 没用
-
说要查docker network, 这个一开始忽略了, 后来感觉应该这里可以突破的
-
迷茫了一阵, 再跑了一个新容器,映射新端口也没有用,据同事说,在另一台机器上就没有这问题,为何?
-
忽然想到, 我在这个服务器上曾经跑过一个network=host的容器,这是否影响了现在这种-p mapping的方式? 正好看到网上有说关于重启docker及docker网卡docker0来解决某些端口访问不了问题的情况,我也试了下
service docker stop
ifconfig docker0 down
ifconfig # 查看下是否真down了
ifconfig docker0 up
service docker start
居然就解决了, 所以docker在混合network=host跟-p mapping的时候,有一些情况?