Docker 构建总是失败并出现错误 hcsshim::PrepareLayer - 在 Win32 中失败:函数不正确。 (0x1) Windows 个容器
Docker build fails always with error hcsshim::PrepareLayer - failed failed in Win32: Incorrect function. (0x1) Windows Containers
重现步骤非常简单。
创建一个 Docker 文件。
我的 Docker 文件有更多行,但我已对它们进行了修剪,以便我们可以关注问题的根源。
说的是,仅这两行(没有任何其他内容)就说明了问题。
FROM microsoft/iis
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue'; $VerbosePreference = 'Continue'; "]
运行 docker build .
你会得到 hcsshim::PrepareLayer - failed failed in Win32: Función incorrecta. (0x1)
.
Windows 10 Pro 1909(但它也发生在 1903 年)
Docker版本:2.1.0.5
引擎:19.03.5
机器:0.16.2
这仍然是 issue (still open) with Win10。
看起来像使用文件系统过滤器(如 Dropbox、Box 等)卸载云存储提供商作为解决方法是某些用户的一个选项。
卸载云存储提供商或病毒扫描程序;如果您确定哪个不起作用,请在 https://github.com/docker/for-win/issues/3884
中分享
我找到了解决问题的方法。
阅读所有 https://github.com/docker/for-win/issues/3884 错误,一些人找到了一个简单的解决方案:重命名 C:\windows\system32\driver\cbfsconnect2017.sys
以便下次启动时不会加载它。
禁用该驱动程序使我能够在将近一年的时间里第一次在 windows 容器中进行 docker 构建。
在我的案例中,Box Sync 就是使用该驱动程序的那个。
编辑:@GustavoTM 发现 pCloud 提出了同样的问题。
EDIT2:@VonC 注意到 GitHub 中的一些人已经解决了删除另一个文件的问题:C:\Windows\System32\drivers\cbfs6.sys
。我没试过,但如果对其他人有帮助,我会把它放上来。
好处是我不需要卸载 Box,只需重命名该文件即可。
在我的情况下,问题类似,但文件 cbfs6.sys
被放置在未安装的应用程序 Jungle 磁盘的其余部分中的某个位置,在文件夹 c:\Program files\Jungle disk ...
中的某个位置。它是 EldoS Corporation 签署的回调文件系统的一部分。
文件夹只能重命名不能直接删除。所以我可以在 PC 重启后立即删除它,在 运行 Docker 之前。所以它也可以在 Docker 服务重启期间被删除。
重现步骤非常简单。
创建一个 Docker 文件。
我的 Docker 文件有更多行,但我已对它们进行了修剪,以便我们可以关注问题的根源。
说的是,仅这两行(没有任何其他内容)就说明了问题。
FROM microsoft/iis
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue'; $VerbosePreference = 'Continue'; "]
运行 docker build .
你会得到 hcsshim::PrepareLayer - failed failed in Win32: Función incorrecta. (0x1)
.
Windows 10 Pro 1909(但它也发生在 1903 年)
Docker版本:2.1.0.5
引擎:19.03.5
机器:0.16.2
这仍然是 issue (still open) with Win10。 看起来像使用文件系统过滤器(如 Dropbox、Box 等)卸载云存储提供商作为解决方法是某些用户的一个选项。
卸载云存储提供商或病毒扫描程序;如果您确定哪个不起作用,请在 https://github.com/docker/for-win/issues/3884
中分享我找到了解决问题的方法。
阅读所有 https://github.com/docker/for-win/issues/3884 错误,一些人找到了一个简单的解决方案:重命名 C:\windows\system32\driver\cbfsconnect2017.sys
以便下次启动时不会加载它。
禁用该驱动程序使我能够在将近一年的时间里第一次在 windows 容器中进行 docker 构建。
在我的案例中,Box Sync 就是使用该驱动程序的那个。
编辑:@GustavoTM 发现 pCloud 提出了同样的问题。
EDIT2:@VonC 注意到 GitHub 中的一些人已经解决了删除另一个文件的问题:C:\Windows\System32\drivers\cbfs6.sys
。我没试过,但如果对其他人有帮助,我会把它放上来。
好处是我不需要卸载 Box,只需重命名该文件即可。
在我的情况下,问题类似,但文件 cbfs6.sys
被放置在未安装的应用程序 Jungle 磁盘的其余部分中的某个位置,在文件夹 c:\Program files\Jungle disk ...
中的某个位置。它是 EldoS Corporation 签署的回调文件系统的一部分。
文件夹只能重命名不能直接删除。所以我可以在 PC 重启后立即删除它,在 运行 Docker 之前。所以它也可以在 Docker 服务重启期间被删除。