为什么“无”映像出现在Docker中以及我们如何避免它

时间:2018-11-09 07:26:48

标签: docker docker-compose dockerfile

当我由于在Dockerfile中进行了某些更改而运行[('foo', 'bar', 'baz'), ([1, 2, 3, 4], [5, 6, 7, 8], [9, 9, 9, 9])] 命令以在Docker中重建映像时,有时会收到“无”映像标签。我们如何避免这个事实?我想重建图像,但不应出现 none 图像。

docker-compose build

5 个答案:

答案 0 :(得分:3)

下面是What are Docker <none>:<none> images?

中的某些部分
  

善良的<none>:<none>

     

这些是中间图片,可以使用docker images -a查看。它们不会导致磁盘空间问题,但绝对是屏幕空间问题。由于所有这些<none>:<none>图像在其含义上都可能非常令人困惑。

     

坏人<none>:<none>

     

这些图像是悬挂的图像,可能会导致磁盘空间问题。这些<none>:<none>图像被列为docker images的一部分,需要修剪。

     

(Docker中悬空的文件系统层是未使用的,没有任何映像被引用。因此,我们需要一种机制来使Docker清除这些悬空的映像)

所以

  • 如果您的情况与dangling张图片有关,则可以通过以下方式删除它们:

    docker rmi $(docker images -f "dangling=true" -q)
    
  • 如果您的情况与intermediate图像有关,可以保留它们,其他图像指向它们的引用。

答案 1 :(得分:1)

根据我的经验,大多数<none>图片都是由临时容器保存的。由于Docker体系结构,这些容器甚至在停止后也被保留。您可以验证使用了多少个已停止的容器

docker ps -a

因此,要删除<none>图片,您首先需要删除不需要的容器:

docker container prune
docker image prune

答案 2 :(得分:0)

要删除<none>层,请使用:

docker rmi $(docker images --filter "dangling=true" -q --no-trunc)

答案 3 :(得分:0)

根据@tgogos所说的内容,几乎没有什么可补充的,除了需要更多的支持。

您可以在此处检查悬空和非悬空图像的图像大小:

docker system df -v

不要被中间图像所困扰。这样一来,您可以通过为Dockerfile的每一行保留中间映像来监督构建过程的效率,即如果没有更改,可以在构建过程中跳过该行。

答案 4 :(得分:0)

这将删除Windows中所有悬空的docker映像:

for /f %x in ('docker images -f "dangling=true" -q') do docker rmi %x