Почему gRPC на локальном хосте отклоняет соединение, когда приложение в докере на WSL2 пытается подключиться?
У меня установлен wsl2 и рабочий стол докера для Windows на Windows 10. С сервером gRPC происходит странное поведение.
Каждый раз, когда я делаю запрос к своему серверу gRPC (на WSL2) внутри контейнера докера, я получаю сообщение об ошибке соединения отказано. Я могу сделать простую проверку следующим образом:
curl -v host.docker.internal:50051
* Trying 192.168.65.2:50051...
* connect to 192.168.65.2 port 50051 failed: Connection refused
* Failed to connect to host.docker.internal port 50051: Connection refused
* Closing connection 0
curl: (7) Failed to connect to host.docker.internal port 50051: Connection refused
Any other non-grpc app works fine! Or even same grpc but on windows side.
Простое nodejs приложение на WSL2:
curl -v host.docker.internal:3000
* Trying 192.168.65.2:3000...
* Connected to host.docker.internal (192.168.65.2) port 3000 (#0)
> GET / HTTP/1.1
> Host: host.docker.internal:3000
> User-Agent: curl/7.69.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Mon, 29 Jun 2020 10:22:15 GMT
< Connection: keep-alive
< Transfer-Encoding: chunked
<
* Connection #0 to host host.docker.internal left intact
Hello, World!
Grpc сервер, если запущен на windows отвечает:
curl -v host.docker.internal:50051
* Trying 192.168.65.2:50051...
* TCP_NODELAY set
* Connected to host.docker.internal (192.168.65.2) port 50051 (#0)
> GET / HTTP/1.1
> Host: host.docker.internal:50051
> User-Agent: curl/7.66.0
> Accept: */*
>
* Received HTTP/0.9 when not allowed
* Closing connection 0
curl: (1) Received HTTP/0.9 when not allowed