Don*_*ers 12 docker docker-container docker-for-windows windows-container docker-desktop
我的 Windows docker 容器无法解析host.docker.internal,但它可以与 Linux 容器一起使用。我更愿意继续使用 Linux 容器,但我在使用旧的 .Net Framework 4.7.2 应用程序时遇到了问题。
我的应用程序连接到本地计算机上的 RabbitMQ。这在 Linux 容器中按预期工作,但在 Windows 容器中它会抛出此错误:
System.Net.Sockets.SocketException:没有这样的主机已知
我尝试过 ping host.docker.internal。
C:\app>ping host.docker.internal Ping 请求找不到主机 host.docker.internal。请检查名称并重试。
这是我的 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"]
Run Code Online (Sandbox Code Playgroud)
我使用的是 docker 版本20.10.2和 docker 桌面版本3.1.0。
我在 Windows 10 版本 10.0.18363 上运行。
我以迂回的方式解决了这个问题。在我的 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
Run Code Online (Sandbox Code Playgroud)
之后,在我的 docker 文件中,我添加了以下命令
RUN $file = $Env:windir+'\System32\drivers\etc\hosts'; '172.18.0.1 host.docker.internal' | Add-Content -PassThru $file;
Run Code Online (Sandbox Code Playgroud)
现在它对我来说就像一种魅力。
| 归档时间: |
|
| 查看次数: |
1511 次 |
| 最近记录: |