Docker启动容器报错: connect: no route to host

前言

笔者在重启了Docker服务后,发现其中一个api容器起不来了,这个容器在内部链接了另外一个MySQL容器,而那个MySQL容器是已经正常运行了。笔者通过docker logs container查看api容器启动日志,发现了这个错误:

[ORM]2018/10/31 09:05:36 register db Ping `default`, dial tcp 192.168.1.54:3306: connect: no route to host
2018/10/31 09:05:36.636 [E] [command.go:54] 注册默认数据库失败: register db Ping `default`, dial tcp 192.168.1.54:3306: connect: no route to host

解决方案

通过在防火墙配置文件的增加一条规则,此问题得以解决,规则如下:


     
     
 

其中address部分改为自己机器docker0网卡的ip地址,然后将规则加入防火墙配置:

[root@template-centos7 /root]#cat /etc/firewalld/zones/public.xml


  Public
  For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected inco
ming connections are accepted.
  
  
  
       
       
  

然后重启防火墙:

[root@template-centos7 /root]#systemctl restart firewalld.service

然后该容器就可以正常启动了,问题解决。

注意,如果防火墙会影响api服务的访问,做完这些操作时请记得停止防火墙服务;笔者在这里就给自己挖了一个坑,导致后台无法访问api,把防火墙停掉即可。

参考链接:https://forums.docker.com/t/no-route-to-host-network-request-from-container-to-host-ip-port-published-from-other-container/39063/6

你可能感兴趣的:(Docker,问题集合)