本文介绍了在 Windows Server Core Docker 上安装 .NET Framework 3.5的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在努力在 docker 容器上安装 .NET Framework 3.5.我已经安装了 4.5,但需要 3.5 才能运行一项服务.这是我的 Dockerfile:

FROM microsoft/windowsservercore外壳 ["powershell"]运行安装-WindowsFeature NET-Framework-45-ASPNET;安装-WindowsFeature Web-Asp-Net45运行 dism/online/enable-feature/featurename:NetFX3/all复制启动启动复制服务服务运行C:WindowsMicrosoft.NETFrameworkv4.0.30319installutil.exe"WCS.WindowsService.exe运行 mkdir 临时日志入口点 C:StartupsetupBatch.bat复制 ContainerApi ContainerApiRUN Remove-WebSite -Name '默认网站'运行新网站 -Name 'ContainerApi' -Port 80 -PhysicalPath 'C:ContainerApi' -ApplicationPool '.NET v4.5'曝光 80CMD ["ping", "-t", "localhost"]

当我尝试构建它时,它在 RUN dism

行给出错误

错误:0x800f081f

找不到源文件.
使用源"选项指定恢复功能所需的文件的位置.有关指定源位置的详细信息,请参阅

  1. 将 sxs.zip 文件复制到我的容器中.我使用图像的 dockerfile 复制了它.
  2. 将文件解压到容器中的 C:sourcessxs 文件夹中.
  3. 使用 Install-WindowsFeature powershell 命令安装该功能.

    Install-WindowsFeature -Name NET-Framework-Features -Source C:sourcessxs -Verbose

希望这会有所帮助.我还发现以下博客有助于理解按需功能.https://blogs.technet.microsoft.com/askcore/2012/05/14/windows-8-and-net-framework-3-5/

I am struggling to install .NET Framework 3.5 on docker container. I have 4.5 installed already, but need 3.5 to run one Service. Here is my Dockerfile:

FROM microsoft/windowsservercore
SHELL ["powershell"]


RUN Install-WindowsFeature NET-Framework-45-ASPNET ;
    Install-WindowsFeature Web-Asp-Net45

RUN dism /online /enable-feature /featurename:NetFX3 /all

COPY Startup Startup
COPY Service Service



RUN "C:WindowsMicrosoft.NETFrameworkv4.0.30319installutil.exe" WCS.WindowsService.exe


RUN mkdir TempLogs

ENTRYPOINT C:StartupsetupBatch.bat

COPY ContainerApi ContainerApi

RUN Remove-WebSite -Name 'Default Web Site'
RUN New-Website -Name 'ContainerApi' -Port 80
    -PhysicalPath 'C:ContainerApi' -ApplicationPool '.NET v4.5'

EXPOSE 80

CMD ["ping", "-t", "localhost"]

When I try to build this, it gives me error on line RUN dism

Now, even if I run dism /online /enable-feature /featurename:NetFX3 /all inside the docker (docker exec) it will still give me the same error.

Anyone with any help?

解决方案

I took the following steps to resolve this issue:

  1. Got hold of the Windows Server 2016 Core ISO file. Mounted the file on local computer.
  2. Extracted the {mount}:/sources/sxs folder into a zip file (sxs.zip). Ensure that the .NET Framework 3.5 cab file (microsoft-windows-netfx3-ondemand-package.cab) is present in the sxs folder. In my case, this was the only file present in the sxs folder.
  1. Copy the sxs.zip file to my container. I copied it using the dockerfile of the image.
  2. Unzip the file to C:sourcessxs folder in the container.
  3. Used the Install-WindowsFeature powershell command to install the feature.

    Install-WindowsFeature -Name NET-Framework-Features -Source C:sourcessxs -Verbose
    

Hope this helps. I also found the following blog useful in understanding the on-demand features.https://blogs.technet.microsoft.com/askcore/2012/05/14/windows-8-and-net-framework-3-5/

这篇关于在 Windows Server Core Docker 上安装 .NET Framework 3.5的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-24 22:27