参考地址: https://stackoverflow.com/questions/40214617/docker-no-route-to-host https://serverfault.com/questions/987686/no-network-connectivity-to-from-docker-ce-container-on-centos-8

问题:

通过docker-compose启动多个服务后,发现服务之间网络请求提示错误:no route to host

  1. Nov 29 09:16:32 172.19.0.1 core[64592]: 2020-11-29T14:16:32Z [ERROR] [/common/utils/utils.go:106]: failed to connect to tcp://postgresql:5432, retry after 2 seconds :dial tcp 172.19.0.3:5432: connect: no route to host
  2. Nov 29 09:16:35 172.19.0.1 core[64592]: 2020-11-29T14:16:35Z [ERROR] [/common/utils/utils.go:106]: failed to connect to tcp://postgresql:5432, retry after 2 seconds :dial tcp 172.19.0.3:5432: connect: no route to host

解决:

查看Docker网络地址

  1. [root@localhost ~]# nmcli
  2. ......
  3. docker0: 已连接 docker0
  4. "docker0"
  5. bridge, 02:42:C7:FF:5D:E5, 软件, mtu 1500
  6. inet4 172.17.0.1/16
  7. route4 172.17.0.0/16
  8. inet6 fe80::42:c7ff:feff:5de5/64
  9. route6 fe80::/64
  10. route6 ff00::/8
  11. ......

添加信任

  1. firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=172.27.0.0/16 accept'

添加公共区域

  1. # Allows container to container communication, the solution to the problem
  2. firewall-cmd --zone=public --add-masquerade --permanent
  3. # reload the firewall
  4. firewall-cmd --reload

可能的解决方案

  1. nmcli connection modify docker0 connection.zone trusted
  2. systemctl stop NetworkManager.service
  3. firewall-cmd --permanent --zone=trusted --change-interface=docker0
  4. systemctl start NetworkManager.service
  5. nmcli connection modify docker0 connection.zone trusted
  6. systemctl restart docker.service

错误发生环境

  1. [root@localhost ~]# cat /etc/redhat-release
  2. CentOS Linux release 8.2.2004 (Core)
  1. [root@localhost ~]# docker version
  2. Client: Docker Engine - Community
  3. Version: 19.03.13
  4. API version: 1.40
  5. Go version: go1.13.15
  6. Git commit: 4484c46d9d
  7. Built: Wed Sep 16 17:02:36 2020
  8. OS/Arch: linux/amd64
  9. Experimental: false
  10. Server: Docker Engine - Community
  11. Engine:
  12. Version: 19.03.13
  13. API version: 1.40 (minimum version 1.12)
  14. Go version: go1.13.15
  15. Git commit: 4484c46d9d
  16. Built: Wed Sep 16 17:01:11 2020
  17. OS/Arch: linux/amd64
  18. Experimental: false
  19. containerd:
  20. Version: 1.3.7
  21. GitCommit: 8fba4e9a7d01810a393d5d25a3621dc101981175
  22. runc:
  23. Version: 1.0.0-rc10
  24. GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
  25. docker-init:
  26. Version: 0.18.0
  27. GitCommit: fec3683
  1. [root@localhost ~]# docker-compose version
  2. docker-compose version 1.27.4, build 40524192
  3. docker-py version: 4.3.1
  4. CPython version: 3.7.7
  5. OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019