Docker for Windows“已经存在”的图像根本不存在

我试图拉一个图像,也应该拉ASPNET:4.7图像。 然而,docker不断告诉我形象“已经存在”,但事实并非如此。 有没有办法告诉Docker的Windows来拉动所需的图像吗?

PS C:\WINDOWS\system32> docker pull -a [hidden]/mycode dev: Pulling from [hidden]/mycode 3889bb8d808b: Already exists e29afd68a947: Already exists 36f010181129: Already exists 94c1c860b007: Already exists d8096eabbf13: Already exists 67025ded22a8: Already exists dbe75d79f130: Already exists 84d3d4630614: Already exists 301ba58699fa: Already exists 5e9f3c14f629: Already exists 90fd39402ca5: Already exists 4791db5edc55: Pull complete 1da86da74a58: Pull complete 3acc18896b8f: Pull complete Digest: sha256:dc7e28154e63d5c22a210c314b4a80dcdba7baeea0ebf853445853680276293d prod: Pulling from [hidden]/mycode 3889bb8d808b: Already exists e29afd68a947: Already exists 36f010181129: Already exists 94c1c860b007: Already exists d8096eabbf13: Already exists 67025ded22a8: Already exists dbe75d79f130: Already exists 84d3d4630614: Already exists 301ba58699fa: Already exists 5e9f3c14f629: Already exists a1fa39b61ce3: Already exists 98fa6868a880: Pull complete 10db2dd5f47b: Pull complete 5c881ba7245b: Pull complete Digest: sha256:8b0464fe849148f4fb3c8e165cc7539823d974171bdb596bed48dd91bd9da20d Status: Downloaded newer image for brunofvalli/xehub PS C:\WINDOWS\system32> docker images REPOSITORY TAG IMAGE ID CREATED SIZE [hidden]/mycode dev 6e8a0b8dd5f9 24 hours ago 11.8GB [hidden]/mycode prod 98a5df79a3ce 24 hours ago 11.8GB PS C:\WINDOWS\system32> 

我曾试图做一个

 docker rmi 3889bb8d808b 

但它告诉我形象不存在。

如何删除这些caching的图像? 或者我如何强制Docker下载图像呢?

编辑我想我应该已经开始了这个问题。 microsoft / aspnet:4.7层/ image大小约为4GB。 目前,当我尝试使用这个图层/图像来构build我的应用程序时,这是失败的,我的猜测是它已经损坏,因为在另一台机器上工作正常。 我想重新获取这个基本的图像,但是做docker rmi并没有从我的系统中删除这个“caching”的图像/图层,所以我得到了这个Already exists消息。 我想重新下载4GB的图像。 有没有办法做到这一点? 我正在接近重新安装Windows 10。

我认为你是与图像混淆层。 Docker镜像是使用dockerfile构build的。 dockerfile中的每一行都会添加一个构成图像的图层。 例如下面的基本dockerfile和上面的例子中的图层标识符:

 FROM busybox:latest # ----> 3889bb8d808b MAINTAINER person # ----> e29afd68a947 RUN touch foo.txt # ----> 36f010181129 CMD ["bin/sh"] # ------> 94c1c860b007 

这将创build一个单一的泊坞窗图像与dockerfile中的每一行组成一个泊坞窗图像中的一个图层。 因此,第一行将构成一个基本图像busybox:latestbusybox:latest的标识符为3889bb8d808b 。 随后,在与dockerfile的行对应的上一层的顶部添加更多层。 这真的有帮助,特别是当我们改变docker文件时,被改变的那一行会触发build筑物图像很快,因为单独对应于那条线的层将被拉动。

同样重要的是要注意,如果一个图层已经存在于你的机器中作为其他一些泊坞窗图像的一部分,那么它将被直接使用,而不会每次都再次拉同一图层。 因此,在你的情况下,已经存在的图层可能是先前在其他图像中拉出的图层,或者甚至是在稍后更新了dockerfile的相同图像,从而触发仅对应于改变的行的图层拉动。

因此,当你试图docker rmi 3889bb8d808bdocker正确说图像不存在。 由于3889bb8d808b标识符对应于一个图层而不是docker图像。

如果您想要将docker镜像保持新鲜,请使用docker images来查找与您的Docker镜像对应的镜像ID,并使用docker rmi <image-ID>将其删除。 然后使用docker pull -a brunofvalli/xehub

没有必要删除caching,docker已经下载更新的图像。 图像是部分构build的,这些部分称为图层。

当图像发生变化时,大部分图层都会发生变化。 所以,如果docker说图像已经存在,那也没关系。 泊坞窗的实际意思是,这个特定的已经存在,并没有改变远程位置。


编辑:

对于Linux用户:

如果你想看看图像数据的存储位置,你可以访问/var/lib/docker/image/aufs 。 在那里你会发现imagedblayerdb

对于Windows用户:

/var/lib/docker挂载在C:\Users\Public\Documents\Hyper-V\Virtual hard disks下虚拟机的永久虚拟磁盘C:\Users\Public\Documents\Hyper-V\Virtual hard disks 。 有关更多信息,请参阅此处 。 这里的讨论涉及图像的存储位置以及如何更改默认位置。

无法完成这项工作。 决定重新安装Windows :(希望这个错误不会再出现。