构建 docker 映像时出现问题,运行 dotnet restore:VS2019 中的“No such host is known”,Windows

Posted

技术标签:

【中文标题】构建 docker 映像时出现问题,运行 dotnet restore:VS2019 中的“No such host is known”,Windows【英文标题】:Problem with buildning docker image, RUN dotnet restore : "No such host is known" in VS2019, Windows 【发布时间】:2021-01-10 23:41:20 【问题描述】:

我尝试在 Visual Studio 2019 中运行“构建 Docker 映像”,但在还原步骤中失败。

这是 DockerFile:

FROM mcr.microsoft.com/dotnet/core/runtime:3.1-nanoserver-1903 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-nanoserver-1903 AS build
WORKDIR /src
COPY ["OwnProject/OwnProject.csproj", "OwnProject/"]
RUN dotnet restore "OwnProject/OwnProject.csproj"
COPY . .
WORKDIR "/src/OwnProject"
RUN dotnet build "OwnProject.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "OwnProject.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "OwnProject.dll"]

这是构建映像时的错误消息:

1>C:\Program Files\dotnet\sdk\3.1.402\NuGet.targets(128,5): error :   No such host is known. [C:\src\OwnProject\OwnProject.csproj]
1>C:\Program Files\dotnet\sdk\3.1.402\NuGet.targets(128,5): error : Unable to load the service index for source https://api.nuget.org/v3/index.json. [C:\src\OwnProject\OwnProject.csproj]

这可能是什么原因?跟DNS有关吗?

如果我跑 docker run -it --dns=8.8.8.8 mcr.microsoft.com/dotnet/core/runtime:3.1-nanoserver-1903 在 powershell 中,我可以 ping google.com,但如果我排除“--dns”,我只能 ping 它。 这可能是恢复失败的原因,解决问题的地址吗? 如果是这样,我该如何解决?是否可以在 DockerFile 中设置 DNS-server?

我查看了一些 nuget 配置文件,例如在用户级别 (用户\AD 名称\AppData\Roaming\NuGet\NuGet.Config):

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
  </packageSources>
</configuration>

...在我看来这很好? 我还尝试禁用网络适配器,更改 interfacemetric 以优先考虑适配器,将 .net core sdk 升级到 3.1.402,但似乎没有任何效果......

任何想法/建议都会有所帮助。

【问题讨论】:

你有没有看过这个问题:***.com/questions/57791748/…? 【参考方案1】:

您必须为 docker 设置默认网络适配器 由于 Docker 使用最低的 InterfaceAlias 适配器 您可以查看此网址了解更多详情https://improveandrepeat.com/2019/09/how-to-fix-network-errors-with-docker-and-windows-containers/

PowerShell Get-NetIPInterface -AddressFamily IPv4 | Sort-Object -Property InterfaceMetric -Descending

这应该会给你一个像这样的输出: Net IP Interface list 最低连接器已断开

我的接口“以太网”已断开连接,因此导致了我的网络问题。为了解决这个问题,我将我的“以太网”接口移动到使用以下命令连接的第一个接口后面:

PowerShell Set-NetIPInterface -InterfaceAlias 'Ethernet' -InterfaceMetric 4

【讨论】:

以上是关于构建 docker 映像时出现问题,运行 dotnet restore:VS2019 中的“No such host is known”,Windows的主要内容,如果未能解决你的问题,请参考以下文章

应用程序构建成功但出现错误:运行映像时出现“没有主清单属性,在 app.jar 中”

运行 Docker 映像时无法访问 jarfile

设置 QEMU 时出现 Github 操作错误 - 错误:无法找到可执行文件:docker

重新创建和扩展 centos6-i386 Docker 基础映像时出现“cp: Command not found”

运行使用 Apple M1 芯片(基于 ARM 的系统)构建的容器时出现“执行格式错误”

使用 docker 构建时出现 pkg_config_path 错误