起因

最近发现Docker的相同容器多了几个,这样就会多出好多无用的镜像,所以需要删除,查了下none镜像产生的原因:

有时候重新构建镜像的时候,该镜像正在被某容器使用中,那么在重新构建同名同版本镜像后,docker保留原来的镜像,即容器还是用原来的,除非重启。
那么原来的镜像名称变成NONE,TAG也成了NONE

看到这里就想到应该是之前的定时脚本引起的,,,

解决

命令:

  • 列出所有的镜像

    1
    >docker images -a

    image.png

  • 列出所有的容器

    1
    >docker ps -a
  • 列出所有的容器 ID

1
>docker ps -a -q
  • 停止所有的容器
1
>docker stop $(docker ps -a -q)
  • 批量删除tag为”“镜像
1
>docker rmi $(docker images | grep "<none>" | awk "{print $3}")

PS:说明

  1. docker images | grep "<none>" 查询所有为<none>的镜像
  2. awk "{print $3}" 输出第三列
  • 删除所有停止的容器
1
docker rm $(docker ps -a -q)
  • 查询所有的镜像的IMAGE ID
1
docker images -q
  • 删除所有的镜像:
1
docker rmi $(docker images -q)

结束