gpt4 book ai didi

docker - 在 Windows Docker 构建中从 Chocolatey.org 诊断下载超时

转载 作者:行者123 更新时间:2023-12-02 04:29:08 24 4
gpt4 key购买 nike

我正在尝试组合一个可以运行 .NET 构建的 Windows Docker 容器。鉴于依赖关系,我需要这样做的最佳方法似乎是使用 Chocolatey。但是在 Chocolatey 的安装步骤中,我在尝试运行命令时遇到下载超时

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

完整的错误如下。
Exception calling "DownloadString" with "1" argument(s): "The operation has
timed out"
At C:\install.ps1:3 char:51
+ ... ess -Force; iex ((New-Object System.Net.WebClient).DownloadString('ht ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], ParentContainsErrorRecordE
xception
+ FullyQualifiedErrorId : WebException

由于多种原因,这似乎很奇怪。
  • 我已经在我手头的机器上成功构建了这个 Docker 镜像
    滚动,但失败始终发生在我们提供的构建中
    机器。
  • 我可以 RDP 到机器上并在外部下载脚本
    docker容器的上下文没有问题。
  • 我可以在 Docker 容器中毫无问题地 ping Chocolatey.org。
  • 我可以从 Docker 中下载其他站点的内容
    容器(即 google.com 或 nuget.org)。
  • 我已经完全摧毁了这台构建机器并提供了一个新的
    一个(通过 BOSH)。

  • 结论:似乎存在某种与 Docker 相关的网络问题,它不会阻止与 Chocolatey.org 上的服务器的连接,但仍会阻止从那里读取 URL 的内容。

    但是,我没有用于故障排除的工具,任何想法都将不胜感激。

    完整的 Docker 文件
    FROM microsoft/windowsservercore:1709

    COPY install.ps1 /install.ps1
    RUN powershell /install.ps1

    ENTRYPOINT powershell

    完整安装.ps1
    $ErrorActionPreference = "Stop"

    Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

    choco install 7zip -y
    choco install visualstudio2017professional -y
    choco install visualstudio2017-workload-manageddesktop --includeOptional --pre -y
    choco install visualstudio2017-workload-universal --includeOptional --pre -y

    choco install nuget.commandline

    最佳答案

    当您安装 Chocolatey 本身时,请确保 TLS1.2 可用。
    此命令行会将 TLS1.2 协议(protocol)添加到当前控制台中的任何现有协议(protocol)中:

    [Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12

    要在系统范围和永久范围内启用 TLS1.2,您必须使用注册表:
    HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client\Enabled = 1
    HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client\DisabledByDefault = 0

    此外,安装 Chocolatey 后,有一些巧克力设置可用于解决网络问题:
    choco config set --name="'commandExecutionTimeoutSeconds'" --value="'2700'"
    choco config set --name="'webRequestTimeoutSeconds'" --value="'30'"
    choco config set --name="'proxy'" --value="'myproxy.myorg.com:8080'"
    choco config set --name="'proxyUser'" --value="'username'"
    choco config set --name="'proxyPassword'" --value="'P@ssw0rd'"

    关于docker - 在 Windows Docker 构建中从 Chocolatey.org 诊断下载超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50689574/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com