簡體   English   中英

Docker 容器 NoRouteToHostException:主機無法訪問

[英]Docker Containers NoRouteToHostException: Host is unreachable

我在 CentOS-8 上有幾個 spring-boot 服務:演示客戶端通過 spring RestTemplate 通過 HTTP 調用演示服務器。 這在沒有 Docker 容器的情況下工作正常。 但是當我使用默認網絡將它們部署為 docker-compose 時,演示客戶端無法調用演示服務器。 我嘗試使用 service-name 和容器的 ip-address 但在兩種情況下都出現相同的錯誤:

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 撰寫文件:

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

在我的情況下,防火牆阻止了來自容器的彈性端口。 我停止了防火牆並重新啟動了它工作的應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM