Docker啟動容器報錯: connect: no route to host
阿新 • • 發佈:2018-12-18
前言
筆者在重啟了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
解決方案
通過在防火牆配置檔案的增加一條規則,此問題得以解決,規則如下:
<rule family="ipv4">
<source address="172.17.0.0/16"/>
<accept/>
</rule>
其中address部分改為自己機器docker0網絡卡的ip地址,然後將規則加入防火牆配置:
[[email protected] /root]#cat /etc/firewalld/zones/public.xml <?xml version="1.0" encoding="utf-8"?> <zone> <short>Public</short> <description>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.</description> <service name="dhcpv6-client"/> <service name="ssh"/> <rule family="ipv4"> <source address="172.17.0.1/16"/> <accept/> </rule> </zone>
然後重啟防火牆:
[[email protected] /root]#systemctl restart firewalld.service
然後該容器就可以正常啟動了,問題解決。
注意,如果防火牆會影響api服務的訪問,做完這些操作時請記得停止防火牆服務;筆者在這裡就給自己挖了一個坑,導致後臺無法訪問api,把防火牆停掉即可。