无法在Google Cloud上运行Windows容器

时间:2018-09-02 03:51:17

标签: docker google-cloud-platform windows-container

我正在尝试在Google云上运行Windows容器并收到此错误...

C:\ Program Files \ Docker \ docker.exe:无法注册层:重新执行错误:退出状态1:输出:ProcessUtilityVMImage \?\ C:\ ProgramData \ docker \ windowsfilter \ 0a04539f9f077acf8dbc35f493c70f4ba3f75a65aff70fd20281886b835c69ef \ UtilityVM:系统找不到指定的路径。

容器完全没有问题。我已经在Windows开发盒,Azure以及最终在AWS上运行了相同的容器,而没有任何问题。

Dockerfile看起来像这样...

FROM microsoft/dotnet-framework:4.7.2-runtime

WORKDIR /.

COPY License/ /License/
COPY Input/ /Input/
COPY Engine/ /Engine/
COPY redist/ /Engine/
COPY Scripts/ /
RUN mkdir Output

CMD ["powershell.exe","./runxx.ps1"]

我在Google Cloud平台上创建了3个VM实例,首先使用1803个带容器的Windows Server,然后是1709个带容器的Window Server,最后是Windows Server Datacenter 2016 Core。

1803完全失败。安装的docker运行Linux容器。因此,当拉动Windows容器时,您会得到一个奇怪的错误“ Unknown blob ...”。花了一段时间来解决这个问题。似乎无法通过命令行切换到Windows容器。

更新:我再次尝试了1803图像,并且Windows容器现在可以正常运行了。不知道我创建的第一个1803 VM错误时该怎么办。我仍然想知道为什么我无法使Windows Server 2016正常工作。

我进一步了解1709。Docker正在运行Windows容器,但是当我尝试运行该容器时,出现错误,指示我的Docker映像需要Windows Server 2016。

所以最后我用Windows Server 2016 Core构建了一个VM。我没有必须自己安装Docker的容器优化版本。我仔细地遵循了脚本https://cloud.google.com/compute/docs/containers/#docker_on_windows,其中包括许多针对已知问题的荒谬解决方法。简要地说,您需要使用

安装docker
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
Install-Package -Name docker -ProviderName DockerMsftProvider

然后解决已知问题...

netsh netkvm setparam 0 *RscIPv4 0
reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters /v DisabledComponents /t REG_DWORD /d 0x0 /f

毕竟,它仍然无法正常工作,并给我在顶部报告的错误。

我在做什么错?我必须得出结论,谷歌云根本不准备运行Windows容器。

编辑:在进一步调查中,我确定可以运行从Windows nanoserver构建的Windows容器,但不能运行从完整.NET Framework构建的Windows容器。

即如果我的Dockerfile包含:

FROM microsoft/nanoserver

容器将运行。如果包含

FROM microsoft/dotnet-framework:3.5-runtime

FROM microsoft/dotnet-framework:4.7.2-runtime

它将失败。这是为什么?这个“无法注册图层”错误从何而来?

0 个答案:

没有答案