gpt4 book ai didi

windows - Docker Windows容器上的MSBuild.exe卡住

转载 作者:行者123 更新时间:2023-12-03 11:11:54 25 4
gpt4 key购买 nike

我正在尝试设置一个Docker容器以在我们的项目上运行Jenkins。该解决方案包含C++和.NET Framework项目。从此处here利用docker文件以及其他几个项目。一种是,我还在BuildTools命令中安装了Microsoft.VisualStudio.Workload.VCTools。
一切似乎都设置正确, Jenkins 找到了所需的所有必要工具。但是当我们运行MSBuild插件时,整个容器在链接时冻结。我怀疑存在内存问题,但是每次都在同一地点发生。但是,一旦进入此状态,我必须在任务管理器中终止vmwp进程,以在Docker命令挂起时重新启动容器。
用于运行容器的docker命令为:

docker run --name jenkins --hostname jenkins --network nat --publish 8080:8080 --restart=always -d -v C:\Docker\jenkins\volumes\jenkins_home:C:\JENKINS_HOME --storage-opt "size=128GB" -m 16G --cpus=8 company/jenkins:latest
冻结之前,jenkins构建过程中的最后一个命令是Lib.exe,其中包含所有生成的.obj文件。我在适当的位置看到了已挂载的工作区卷上生成的库。
如果减少进入.lib的对象的数量,该命令将正常运行。但是,如果我列出对象的完整列表,它将挂起。该命令如下所示:

"C:\Program Files (x86)\Microsoft VisualStudio\2019\BuildTools\VC\Tools\MSVC\14.25.28610\bin\Hostx64\x64\lib.exe"/OUT:"C:\JENKINS_HOME\workspace\MyProgram\build\Release\MyLibrary.lib"/NOLOGO /MACHINE:X64 /LTCG C:\JENKINS_HOME\workspace\MyProgram\temp_build\Release\common_interface.obj...rest of objects...


尝试编译所有对象时,docker容器上的统计信息:
CONTAINER ID        NAME                CPU %               PRIV WORKING SET    NET I/O             BLOCK I/O
1b219679b4e6 jenkins 0.02% 2.961GiB 2.79MB / 1.43MB 96.7MB / 1.7GB
我在docker容器中手动运行了MSBuild.exe,它导致了相同的行为。我可以控制C,然后它以“尝试取消构建...”响应并继续挂起。在这种情况下,docker容器的内存使用量为2.2GB(任务管理器中的Vmmem反射(reflect)了这一点)。
我的计算机统计信息:
Processor - i9-9900K
Memory - 32GB
OS - Windows 10 Professional
任何帮助,将不胜感激。

最佳答案

我将容器从Hyper-V隔离中删除,并使其进行了进程隔离,这在Windows中是新近支持的,并且可以正常工作。在运行命令上使用的标志是:

--isolation=process

好奇为什么Hyper-V隔离导致链接命令期间容器冻结...

关于windows - Docker Windows容器上的MSBuild.exe卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61752226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com