RUN POWERSHELL cmd в Docker build завершается с ошибкой - 'возвращен ненулевой код: 3221226505' - PullRequest
0 голосов
/ 25 марта 2020

Хост, работающий docker - это windows 2016

Имя ОС: Microsoft Windows Дата-центр сервера 2016 (версия 1607)

Версия ОС: 10.0.14393 N / A Сборка 14393.3504

Сборка Docker неожиданно начала давать сбой. Это работало до нескольких дней go. Иногда он снова начинает работать самостоятельно. Как только мы перезапускаем хост-сервер или кеш теряется - он начинает выдавать эту ошибку. Через некоторое время он снова начинает работать .. действительно непредсказуемо. Может кто-нибудь помочь?

Step 1/26 : FROM mcr.microsoft.com/windows/servercore:ltsc2016 AS base
 ---> c5037b311625
Step 2/26 : WORKDIR /app
 ---> Using cache
 ---> f84175a68324
Step 3/26 : EXPOSE 80
 ---> Using cache
 ---> a72ee1dd6763
Step 4/26 : RUN PowerShell Set-ExecutionPolicy Bypass -Scope Process -Force;[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;$env:chocolateyUseWindowsCompression = 'true'; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
 ---> Running in 0d15f930ea0d
compose.cli.main.main: Service 'someabc' failed to build: The command 'cmd /S /C PowerShell Set-ExecutionPolicy Bypass -Scope Process -Force;[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;$env:chocolateyUseWindowsCompression = 'true'; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))' returned a non-zero code: 3221226505
##[error]Process completed with exit code 1. 

1 Ответ

0 голосов
/ 25 марта 2020

Ваша ошибка 0xC0000409 ERROR_STACK_BUFFER_OVERRUN. Ирония в том, что вы спрашиваете об этом в Stack Overflow. Это утечка памяти или переполнение стека.

System. Net .WebClient может быть вызван только столько раз, пока не закончатся ресурсы памяти. Я добавил $ web c .dispose (), чтобы задать вопрос очистки мусора. Start-sleep дает сборщику мусора время на очистку. Если он продолжает ломаться, увеличьте время сна.

cmd /S /C PowerShell Set-ExecutionPolicy Bypass -Scope Process -Force;[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;$env:chocolateyUseWindowsCompression = 'true'; iex ((($Webc = New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')));$Webc.dispose() ; Start-Sleep 1

Причина, по которой он снова начинает работать, заключается в аварийном завершении работы сценария. net затем разрешается утилизировать System. Net .WebClient.

...