【问题标题】:Docker image is completely borked and won't startDocker 映像完全无用,无法启动
【发布时间】:2018-09-14 01:29:42
【问题描述】:

我正在运行 Docker for Windows 并尝试构建映像。它工作得很好,但后来我将它添加到我的 Dockerfile 的末尾:

# Install Python
RUN choco install -y python3 --params "/InstallDir:C:\Python"
ENV PYTHONPATH=C:\Python\python.exe

当我这样做时,图像构建,但当我尝试运行它时,我得到:

C:\Program Files\Docker\Docker\Resources\bin\docker.exe: 错误 来自守护进程的响应:容器 9e758f7ef343436f64e7e29b795154b1e771a6682b625097d680e3b510a9047c 在启动期间遇到错误:Windows 系统调用失败: 计算系统意外退出。 (0xc0370106)。

所以,我删除了这两行并重新构建。然而,当我尝试运行它时(现在恢复到以前工作的版本!)我仍然得到错误。我怎样才能清除所有乱七八糟的东西?到目前为止,我已经尝试了以下方法:

  • 重启 Docker
  • 重新启动 Windows
  • 在图像上运行docker rmi -f,以及任何看起来像某种没有标签的中间构建图像。
  • docker system prune
  • 使用--no-cache 重建映像
  • 尝试使用--memory=8G 为构建和运行提供更多内存
  • 诅咒诸神

另外,请注意图像(完整的图像,包括安装 Python 的行)在我的另一台运行 Windows Server 2016 的机器上构建并运行。所以,图像很好。这台电脑出了点问题,我似乎无法撤消。我想重新安装 Docker 是我的下一步,除非有人有更好的主意。

Docker 版本:

Client:
 Version:           18.06.1-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        e68fc7a
 Built:             Tue Aug 21 17:21:34 2018
 OS/Arch:           windows/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.06.1-ce
  API version:      1.38 (minimum version 1.24)
  Go version:       go1.10.3
  Git commit:       e68fc7a
  Built:            Tue Aug 21 17:36:40 2018
  OS/Arch:          windows/amd64
  Experimental:     false

整个 Dockerfile:

# escape=`

FROM microsoft/dotnet-framework:4.7.1 as vsbuild

# Restore the default Windows shell for correct batch processing below.
SHELL ["cmd", "/S", "/C"]

# Download the Build Tools bootstrapper
ADD https://aka.ms/vs/15/release/vs_buildtools.exe C:\TEMP\vs_buildtools.exe

# Install Static Analysis Tools
RUN C:\TEMP\vs_buildtools.exe --quiet --wait --norestart --nocache `
    --add Microsoft.VisualStudio.Component.Static.Analysis.Tools `
 || IF "%ERRORLEVEL%"=="3010" EXIT 0

FROM jetbrains/teamcity-agent:2018.1.2-windowsservercore-ltsc2016

COPY --from=vsbuild ["C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/Team Tools", "C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/Team Tools"]
COPY --from=vsbuild ["C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/MSBuild/Microsoft/VisualStudio/v15.0/CodeAnalysis", "C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/MSBuild/Microsoft/VisualStudio/v15.0/CodeAnalysis"]

SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]

# Install Chocolatey
ADD https://chocolatey.org/install.ps1 C:\TEMP\chocolatey.ps1
RUN C:\TEMP\chocolatey.ps1

# Install Node.js
RUN choco install -y nodejs

# Install Gulp
RUN choco install -y gulp-cli

# Install SQL Command Line Utilities
RUN choco install -y sqlserver-cmdlineutils

# Install Azure Powershell
RUN choco install -y azurepowershell

# Install Web Deploy 3.0
RUN choco install -y msdeploy3

# Install WAWSDeploy
RUN choco install -y wawsdeploy

# Install Python
#RUN choco install -y python3 --params "/InstallDir:C:\Python"
#ENV PYTHONPATH=C:\Python\python.exe

【问题讨论】:

  • 请分享您的完整 Dockerfile
  • 这似乎是相关的:github.com/docker/for-win/issues/902 总而言之,docker for windows 还处于早期阶段。
  • RUN choco install -y python3 --params /InstallDir:""C:\Python""
  • @Alex - 发布了我的 Dockerfile。
  • @Alex choco 命令有效并且在主机上工作。 Dockerfile 不再使用或不使用命令构建。

标签: docker dockerfile


【解决方案1】:

所以,我似乎已经解决了它。至少在我的情况下,因为正如 cmets 中所提到的,这个错误是相当普遍的,并不意味着特别的一件事。

首先,在安装 Chocolately 后,我必须完全注释掉 Dockerfile 中的所有内容。这建立并运行。接下来,我一次取消注释一件事。每次,我都会构建并运行。最终,我遇到了错误(无论是构建还是运行),我会改变一些东西,也许下次它会起作用。无论我怎么尝试,我都无法让一切运行起来。

看来,总体问题是您无法在单个 Docker 构建中完成这么多事情。我相信我已经达到了可以构建的层数的某种限制。

解决方案:

事实证明 Chocolately 能够一次安装多个软件包。因此,我将所有 RUN 命令替换为一个:

# Install packages for build
RUN choco install -y nodejs gulp-cli wawsdeploy msdeploy3 azurepowershell sqlserver-cmdlineutils

这导致构建速度更快,也消除了错误。我也可以通过使用单个 RUN 语句运行多个命令来做同样的事情。可以说,这个错误似乎与构建太多层和以某种方式耗尽资源有关。不知道为什么我在 Windows Server 2016 上没有这个问题;可能是机器规格不同,或者还有其他一些因素在起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    • 2021-11-12
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    相关资源
    最近更新 更多