我正在尝试组合一个可以运行 .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容器的上下文没有问题。
容器(即 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/