docker - Docker容器NoRouteToHostException:主机不可访问

标签 docker docker-compose containers

我在CentOS-8上,有几个spring-boot服务:demo-client通过spring RestTemplate通过HTTP调用demo-server。没有Docker容器,这可以正常工作。
但是当我使用默认网络将它们部署为docker-compose时,demo-client无法调用demo-server。我尝试使用容器的服务名称和IP地址,但在两种情况下都出现相同的错误:

demo-client_1  | 2020-02-29 10:23:55.165 ERROR 1 --- [nio-8082-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.client.ResourceAccessException: **I/O error on GET request for "http://172.24.0.2:8081/hello": Host is unreachable (Host unreachable);** nested exception is java.net.NoRouteToHostException: Host is unreachable (Host unreachable)] with root cause
demo-client_1  | 
demo-client_1  | java.net.NoRouteToHostException: Host is unreachable (Host unreachable)
demo-client_1  |    at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_212]
demo-client_1  |    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_212]*

Docker compose file :

docker-compose.yml:
version: '3'
services:
  demo-client:
    build: ./demo-client
    ports:
      - "8082:8082"
    depends_on:
      - demo-server
  demo-server:
    build: ./demo-server
    ports:
      - "8081:8081"

我尝试了一些早期帖子中建议的与防火墙相关的操作:
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload
firewall-cmd --permanent --zone=trusted --add-interface=docker0
firewall-cmd --reload
service firewalld restart*

这些都不起作用。我认为直截了当的事情变得更加复杂。

最佳答案

问题出在Centos-8上,而相同的代码在CentOS-7上运行良好。因此,现在我回到了Centos-7。
CentOS-8引入Podman作为官方容器工具而不是Docker

关于docker - Docker容器NoRouteToHostException:主机不可访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60464748/

相关文章:

docker - 具有root权限在/docker-entrypoint-initdb.d下执行脚本

docker - 如何使用多个Docker容器在Jenkins管道中设置Jenkins代理

docker - redis HMSEET出现错误,调用tcp :6379: connect: connection refused

c# - 哪种 C# 容器对于仅存在一个操作的资源效率最高?

docker - docker run 后自动删除文件

docker - Dockerfile LDAP更新未保存

azure - 无法从同一计算机上的 docker 容器连接到 Azure 存储模拟器

docker-compose - docker服务和堆栈有什么区别?

docker - 如何在没有日志的情况下在后台运行dockerd

memory - 更新 docker 中现有容器的内存/CPU 限制