【问题标题】:Unable to load the service index for source https://api.nuget.org/v3/index.json. [C:\app\aspnetapp.csproj]无法加载源 https://api.nuget.org/v3/index.json 的服务索引。 [C:\app\aspnetapp.csproj]
【发布时间】:2018-04-26 09:21:55
【问题描述】:

https://github.com/dotnet/dotnet-docker-samples/tree/master/aspnetapp

Docker 命令docker build -t aspnetapp.

docker build 命令出错

C:\Program Files\dotnet\sdk\2.1.105\NuGet.targets(104,5): 错误:无法加载源 https://api.nuget.org/v3/index.json 的服务索引。 [C:\app\aspnetapp.csproj]

[1]PS C:\Users\pssharma\dotnet-docker-samples\aspnetapp> docker build -t aspnetapp .
Sending build context to Docker daemon  2.444MB
Step 1/10 : FROM microsoft/aspnetcore-build:2.0 AS build-env
 ---> eb21d939e0d8
Step 2/10 : WORKDIR /app
 ---> Using cache
 ---> d4ec30216ed7
Step 3/10 : COPY *.csproj ./
 ---> Using cache
 ---> 2ff39b5e6cb4
Step 4/10 : RUN dotnet restore
 ---> Running in 776764a35311
  Restoring packages for C:\app\aspnetapp.csproj...
  Restoring packages for C:\app\aspnetapp.csproj...
C:\Program Files\dotnet\sdk\2.1.105\NuGet.targets(104,5): error : Unable to load the service index for source https://api.nuget.org/v3/index.json. [C:\app\asp
C:\Program Files\dotnet\sdk\2.1.105\NuGet.targets(104,5): error :   An error occurred while sending the request. [C:\app\aspnetapp.csproj]
C:\Program Files\dotnet\sdk\2.1.105\NuGet.targets(104,5): error :   The operation timed out [C:\app\aspnetapp.csproj]

以下命令返回一个非零代码:1

powershell -Command $ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue'; dotnet restore

【问题讨论】:

  • 在几个早期版本中,我必须重新启动 docker 服务才能解决此类问题。您能否尝试重新启动它并从管理员 powershel 控制台重试构建:Restart-Service com.docker.service -Force
  • 嗨,我尝试使用管理员 PowerShell,但得到了同样的错误。
  • 您可以尝试在您的 DockerFile 中添加 RUN curl https://api.nuget.org/v3/index.json -vRUN dotnet restore --verbosity diag 以查看它在做什么 - 如果只是恢复失败或两者都使用 curl。
  • 我得到同样的错误这是 Dockerfile FROM microsoft/aspnetcore-build:2.0 AS build-env WORKDIR /app # 复制 csproj 并恢复为不同的层 COPY *.csproj ./ RUN dotnet restore # 复制所有内容否则并构建 COPY 。 ./ RUN dotnet publish -c Release -o out # 构建运行时映像 FROM microsoft/aspnetcore:2.0 WORKDIR /app COPY --from=build-env /app/out 。入口点 ["dotnet", "aspnetapp.dll"]
  • 我遇到了同样的问题。你解决了吗?

标签: docker


【解决方案1】:

当主机存在多个网络适配器并且所述适配器的优先级配置错误时,这似乎会发生。运行以下命令以显示网络适配器表:

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

您希望您的主适配器(在我的情况下是 wifi)具有 最低 InterfaceMetric。

Set-NetIPInterface -InterfaceAlias 'Wi-Fi' -InterfaceMetric 1

我的网卡表供参考:

有关更多信息,请参阅此 github 线程: https://github.com/docker/for-win/issues/2760#issuecomment-430889666

【讨论】:

  • 这对我有用! .NetCore sdk 3.1.300 Web 应用程序,Windows 容器。尝试以管理员身份运行 powershell。也检查一下:improveandrepeat.com/2019/09/…
【解决方案2】:

对我来说,这个问题是随机出现的(以及多个类似的问题,例如“nuget 的权限被拒绝”等。要解决这个问题,请重新启动 Visual Studio) 对于 windows,已通过重新启动 docker 服务并重新启动 Visual Studio (2017) 进行修复。

  1. 关闭 Docker 和 Visual Studio
  2. Winkey + R,输入 services.msc
  3. 找到Docker for Windows Service并重启(正常重启Docker是不行的)
  4. 启动 Docker 和 Visual Studio

【讨论】:

  • 它甚至在 MacOS 中也能正常工作。我停止了 Docker 并繁荣了!谢谢
  • 在 Linux 容器上运行 eShopOnContainer 应用程序,当我运行 docker-compose build 时抛出错误:无法加载源 dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json 的服务索引。 [/src/eShopOnContainers-ServicesAndWebApps.sln] /usr/share/dotnet/sdk/3.1.201/NuGet.targets(124,5):错误:连接被拒绝 [/src/eShopOnContainers-ServicesAndWebApps.sln] 错误:服务' webstatus 构建失败:命令 '/bin/sh -c dotnet restore "eShopOnContainers-ServicesAndWebApps.sln"' 返回非零代码:1 PS C:\Projects\eShopOnContainers-dev\eShopOnContainers-dev\src>
【解决方案3】:

只需将--network=host 选项添加到docker build

docker build -t aspnetapp . --network=host

【讨论】:

  • 如果您在容器本身 (#containerception) 中运行 docker build 命令,那么这将解决外部依赖关系,因为网络仅限于容器主机。当我使用 GitHub Actions 运行本地任务运行程序时,它对我有用。如果您在裸机(或 VM)上运行 docker build,我不确定这是否能解决问题。希望这有助于澄清为什么这可能会或可能不会起作用。
【解决方案4】:

我通过从命令行传入 docker build 环境变量来完成这项工作,如下所示:

docker build --build-arg HTTP_PROXY=http://{un}:{pw}@{proxyhost}:{port} --build-arg HTTPS_PROXY=http://{un}:{pw}@{proxyhost}:{port} -t aspnetapp.

*请注意,您的用户名必须是 url 编码(ei. DOMAIN\name => DOMAIN%5Cname)

【讨论】:

  • 这对我不起作用。您是如何确定代理地址和端口的?
  • @Robotron 我认为您需要从网络管理员那里获取该信息。我前段时间发布了这个,并且不再在我必须为此找到解决方案的客户那里。抱歉,我现在无法提供更多帮助,但祝你好运!
【解决方案5】:

遇到同样的问题,问题是缺少 NuGet 使用的依赖项。

我正在使用microsoft/dotnet:sdk 映像,在将libcurl3 安装到我的映像后它可以工作。

尝试添加 RUN apt-get update && apt-get install -y libcurl3 在恢复之前发送到您的Dockerfile

如果不起作用,请尝试重新启动 Docker 实例。

edit:如果这对您没有帮助,this open issue 上的 NuGet github 上有些人正在尝试解决同样的问题。

edit2:添加 Ignas 解决方案:重启 docker 实例。

【讨论】:

【解决方案6】:

我很惊讶没有人这么说。这是由于没有安装最新的 sdk 造成的。就我而言,docker 正在寻找文件

C:\Program Files\dotnet\sdk\3.1.302\NuGet.targets

但是这个文件在我的机器上并不存在,而是我有一个不同的次要版本。

C:\Program Files\dotnet\sdk\3.1.301\NuGet.targets

我确定他们会使用旧版本让它工作,但就我而言,我只是更新了下载的最新 sdk

【讨论】:

  • 我似乎有同样的事情,但更新我的 sdk 似乎对我这边的这个问题不起作用。
  • @JelleSchräder,手动导航到它要查找的文件是否存在?
  • 我发现了我这边的问题:VPN 阻止了我的请求。
  • VPN 阻止您对本地文件的请求?
  • 完美,之后还需要重启机器
【解决方案7】:

打开 CMD 或 Powershell 并运行:dotnet nuget locals http-cache --clear

https://status.nuget.org/

【讨论】:

  • 欢迎来到 StackOverflow!为您的答案添加解释将帮助其他人了解它如何帮助解决问题。
  • 另外,我认为这个答案不适用,因为 OP 正在为 Docker 环境寻找代理解决方案。
【解决方案8】:

在我的情况下,Dockerfile,我有

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2

但我只安装了.net 2.1dotnet --list-sdks 查看)。所以我必须将2.2 更改为2.1 才能使其正常工作。

【讨论】:

  • 我知道这是一个旧的,我不知道为什么在 OSX 上构建时 docker 会受此影响,但这为我做了。我正在使用sdk:3.1 构建,但在本地拥有3.0。为 osx 下载并安装 3.1boom 就可以了。 WTF,为什么 docker 会受到我主机上安装的内容的影响!也许 dotnet restore 以某种方式首先搜索本地主机,但我不知道是通过什么机制。
【解决方案9】:

经过一个小时与代理的斗争,最终以下解决方案对我来说很好:

docker build --build-arg HTTP_PROXY=http://xxxx.com:8080 --build-arg HTTPS_PROXY=http://yyyy:8080 -t kdekarin/aspnet .

查看@patrickbadley 的评论了解更多信息!

【讨论】:

    【解决方案10】:

    发生这种情况的另一个原因。如果您的 docker 文件针对 windows 容器并且您的 docker 正在运行 linux 模式,反之亦然。

    【讨论】:

      【解决方案11】:

      如果问题是由贵组织的自签名证书引起的,您可以通过以下方式解决:

      1. 获取您的 IT 部门提供的证书文件 (*.cer)。
      2. 将其复制到 SSL 证书位置:COPY ["./combined.cer", "/etc/ssl/certs/"]
      3. 更新 SSL 证书列表:RUN update-ca-certificates

      这些步骤适用于 Debian,需要适应其他发行版。

      【讨论】:

        【解决方案12】:

        我在 Debian 9 上遇到了同样的问题。我通过断开与本地网络的连接来掩盖错误。它对我有用,因为我没有更改代码库上的任何内容,也不需要从 nuget 获取包。

        【讨论】:

          【解决方案13】:

          我通过禁用 Avast Antivirus 并卸载 McAffee Antivirus 在我的 Windows 10 计算机上解决了这个问题。

          • 右键单击通知选项卡中的 Avast 图标
          • 选择 Avast Shields Control
          • 点击“在计算机重新启动前禁用”。

          您现在可以成功运行 Docker 构建。 如果需要,我可以提供进一步的帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-01-28
            • 2021-02-28
            • 1970-01-01
            • 2023-03-22
            相关资源
            最近更新 更多