笔者在重启了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,把防火墙停掉即可。