问题描述
我正在努力在 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
找不到源文件.
使用源"选项指定恢复功能所需的文件的位置.有关指定源位置的详细信息,请参阅
- 将 sxs.zip 文件复制到我的容器中.我使用图像的 dockerfile 复制了它.
- 将文件解压到容器中的 C:sourcessxs 文件夹中.
使用 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
Error: 0x800f081f
The source files could not be found.
Use the "Source" option to specify the location of the files that are required to restore the feature. For more information on specifying a source location, see http://go.microsoft.com/fwlink/?LinkId=243077.
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:
- Got hold of the Windows Server 2016 Core ISO file. Mounted the file on local computer.
- 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.
- Copy the sxs.zip file to my container. I copied it using the dockerfile of the image.
- Unzip the file to C:sourcessxs folder in the container.
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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!