Windows 容器镜像踩坑记录

本文探讨了在Windows容器中使用.NETCore、Node.js和Nginx时遇到的问题,如类库缺失、依赖还原错误和平台兼容性。通过切换到mcr.microsoft.com/windows/servercore:ltsc2022等基础镜像,解决了GDIPlus.dll、MFC应用、缺失类库和32/64位兼容性问题。
摘要由CSDN通过智能技术生成

为什么研究windows容器?emm,公司需要,不想多说。

dotnet后端

问题描述:

基于mcr.microsoft.com/dotnet/aspnet:6.0镜像撰写dockerfile编译.net core后端项目后运行容器出现类库不存在问题:

  1. 程序中使用了fastreport,而它需要调用gdiplus.dll类库

  2. 官方基础镜像基于nanoserver镜像制作,该镜像不支持使用gdiplus.dll类库,尝试复制gdiplus.dll到容器的C:\Windows\System32\无效。

  3. 在这里插入图片描述

相关资料:

解决办法:

使用mcr.microsoft.com/dotnet/aspnet:6.0-windowsservercore-ltsc2022作为运行容器的基础镜像。缺点:最终的镜像大小约4-5个G。

前端node基础镜像

问题1描述:

前端基于vben框架打造,vben项目中的某些依赖在使用nanoserver安装node的基础镜像中无法被还原,使用nanoserver镜像作为基础镜像制作node镜像后,在dockerfile中执行yarn install时报错如下(目前未能找到问题,应该是系统缺少某些类库):

在这里插入图片描述

解决办法:

使用mcr.microsoft.com/windows/servercore:ltsc2022作为基础镜像去撰写node镜像的dockerfile

问题2描述:

基于mcr.microsoft.com/windows/servercore:ltsc2022安装node后再还原项目依赖时报错如下:(报错的依赖源自于vben,最后发现还是系统中缺少某些类库造成的)

在这里插入图片描述

解决办法:

使用servercore作为基础镜像安装vc_redit.x64.exe后,再安装node

替代方案:将vcruntime140.dll库复制到容器的C:/Windows/System32/目录(测试可行,vcruntime140.dll在安装vc_redit.x64后生成)

前端nginx基础镜像

问题描述:

前端通过node打包编译后最终需要挂载到nginx上运行,为了缩小镜像大小尝试使用nanoserver作为基础镜像安装nginx,但发现安装后无法启动nginx,也不产生报错信息。经过查阅资料发现nanoserver仅支持64位的程序,而nginx提供的预编译 nginx Windows 二进制文件是 32 位的,如果您需要 64 位 Windows 二进制文件,您可以尝试按照 nginx官方文档 中所述自行编译它。

解决办法:

使用mcr.microsoft.com/windows/servercore:ltsc2022作为基础镜像去撰写nginx镜像的dockerfile

相关资料:

nanoserver基础镜像的限制相关资料

  • 21
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想只会CRUD的猿某人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值