Docker Контейнеры NoRouteToHostException: узел недоступен - PullRequest
0 голосов
/ 29 февраля 2020

Я нахожусь на CentOS-8 и имею несколько сервисов весенней загрузки: демо-клиент вызывает демо-сервер через HTTP через Spring RestTemplate. Это прекрасно работает без контейнера Docker. Но когда я развертываю их как docker -компоновать с сетью по умолчанию, демо-клиент не может вызвать демо-сервер. Я пробовал с именем службы, а также с 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 составить файл:

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*

Ничего из этого не сработало. То, что я считал прямой вещью, оказалось более сложным.

...