Docker Windows 容器无法解析 host.docker.internal

问题描述 投票:0回答:1

我的 Windows docker 容器无法解析 host.docker.internal,但它可以与 Linux 容器一起使用。我更愿意继续使用 Linux 容器,但我在使用旧的 .Net Framework 4.7.2 应用程序时遇到了问题。

我的应用程序连接到本地计算机上的 RabbitMQ。这在 Linux 容器中按预期工作,但在 Windows 容器中它会抛出此错误:

System.Net.Sockets.SocketException:没有已知的主机

我尝试过 ping host.docker.internal。

C: pp>ping host.docker.internal Ping 请求找不到主机 主机.docker.内部。请检查名称并重试。

这是我的 dockerFile:

FROM mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019
ARG source
WORKDIR /app
COPY ${source:-SampleApp/obj/Docker/publish} .
ENTRYPOINT ["C:\\app\\SampleApp.exe"]

我使用的是 docker 版本 20.10.2,以及 docker 桌面版 3.1.0
我在 Windows 10 版本 10.0.18363 上运行。

docker docker-for-windows docker-container docker-desktop windows-container
1个回答
0
投票

我以迂回的方式解决了这个问题。在我的 docker-compose.yml 文件中,我创建了一个网络并绑定了一个静态 IP 作为网关 ip,如下所示

version: '3.4'

services:
  service-name:
    networks:
        local_net:
            ipv4_address: 172.18.0.2
networks:
  local_net:
    ipam:
        config:
           -
            subnet: 172.18.0.0/25
            gateway: 172.18.0.1

此后,在我的 docker 文件中,我添加了以下命令

RUN $file = $Env:windir+'\System32\drivers\etc\hosts'; '172.18.0.1 host.docker.internal' | Add-Content -PassThru $file;

现在它对我来说就像一种魅力。

© www.soinside.com 2019 - 2024. All rights reserved.