【发布时间】:2020-02-18 19:35:23
【问题描述】:
由于dotnetfx,我需要在构建过程中重新启动 Docker 容器。 Dockerfile:
FROM mcr.microsoft.com/windows/servercore:ltsc2019
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
# Install Chocolatey
RUN Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
# Universal Windows Platform build tools workload for Visual Studio 2019 Build Tools (https://chocolatey.org/packages/visualstudio2019-workload-universalbuildtools#dependencies)
RUN choco install visualstudio2019-workload-universalbuildtools --package-parameters "--includeOptional" --confirm
但我遇到了这个错误:
Packages requiring reboot:
- dotnetfx (exit code 3010) # <--- it means a reboot is needed!
我尝试在同一个RUN 中运行这两个命令并在它们之间添加Restart-Computer(由\ 分开)并在每个安装命令之后执行RUN 命令但是当我这样做时它看起来像Docker 输出迷路了。
是否可以在构建过程中重新启动当前容器而不会使 Docker 丢失并保持安装过程?
更新 1
在运行最后一个命令之前尝试安装此dotnetfx,但我得到了同样的错误。
# Microsoft .NET Framework (https://chocolatey.org/packages/dotnetfx)
RUN choco install dotnetfx --confirm
错误:
Packages requiring reboot:
- dotnetfx (exit code 3010)
更新 2(解决方法)
我已设法使用已安装 .NET 的基础映像解决此问题:
FROM mcr.microsoft.com/dotnet/framework/sdk:4.8
【问题讨论】:
-
我不知道您的问题的答案,但另一种选择是尝试在本地计算机上安装此软件包并使用 COPY dockerfile 命令将可执行文件复制到容器中。更好的是,也许可以找到一个已经安装了软件的 docker 镜像。
-
@BrunoFarias 谢谢,但是一旦有这个 Dockerfile 的动态配置,这不是一个选项,所以我需要通过 Dockerfile 来解决这个问题......
-
请注意 sdk 映像大小为 10 GiB,而我设法创建了一个只有我需要的映像,这要感谢 servercore 基础映像和 5 GiB 的巧克力!
标签: powershell docker dockerfile restart docker-for-windows