Docker 在 Windows Server 2019 上:无法注册层:无法创建缺少父层的层

Docker on Windows Server 2019: failed to register layer: Cannot create layer with missing parent

不久前,我安装了 Docker 并创建了一些基本映像。我注意到在文件夹 C:\ProgramData\docker\containersC:\ProgramData\docker\windowsfilter 中创建了很多文件夹。除此之外,我不知道这些文件夹究竟有何不同,我想从头开始,这样我就可以确切地知道这些文件夹是何时以及如何创建的,并确保我知道如何限制文件夹的数量。为此,我需要更深入地了解发生了什么以及我是如何来到这里的。所以我从上述两个文件夹中删除了所有文件夹。

然后在 PowerShell 运行 命令中 docker image pull mcr.microsoft.com/windows/servercore:ltsc2019(如 here 所述)。

但是,我得到错误:

ltsc2019: Pulling from windows/servercore
4612f6d0b889: Already exists
c67ded6868b6: Extracting [==================================================>]  967.7MB/967.7MB
failed to register layer: Cannot create layer with missing parent b30ce8240c3d9379bedb21d473387a1511327572e7f1721c32ca01b0b1f7fac9: CreateFile C:\ProgramData\docker\windowsfilter\b30ce8240c3d9379bedb21d473387a1511327572e7f1721c32ca01b0b1f7fac9: The system cannot find the file specified.

我用 Google 搜索了那个错误并检查了 here

所以我运行docker images:

REPOSITORY                             TAG        IMAGE ID       CREATED        SIZE
scrapy                                 latest     d6cfd054a887   3 months ago   5.9GB
<none>                                 <none>     edb9e1b2db76   3 months ago   5.27GB
hello-world                            latest     096dec0e4e75   4 months ago   252MB

mcr.microsoft.com/windows/servercore ltsc2019 152749f71f8f 4 个月前 5.27GB

我是 Docker 的绝对新手,所以我错过了上面的哪一步?我基本上想创建一个全新的 Docker 图像并在其中安装 Scrapy。

PS。我 在做类似的事情,但不确定如何从我现在的位置开始。

发生此错误是因为在注册 based 层时发现已经提取和提取的层 (b30ce824...) 的数据丢失。丢失的层数据是具有相同 64 个字符名称的 windowsfilter 子文件夹。

清除windowsfilter文件夹时,您需要同时删除docker image ls显示的图片。这将删除 docker 到 windowsfilter 缓存层的链接,并让您成功重新提取新图像。

N.B。 docker image * 命令是管理此文件夹的预期方式。