问题
通过 docker images
命令查询本地镜像列表,有可能看到 repository
和 tag
均为 none
的镜像,这种镜像在 Docker
官方文档中被称作 dangling images
。
原因
根据官方解释,该镜像的产生是由于通过 docker build -t [image_name:image_version] . -f dockerfile
构造新镜像时, [image_name:image_version]
与本地已有镜像重名导致的。新生成镜像的 名称+版本号
与本地原有镜像相同时, docker
引擎会自动将名称和版本号分配给新镜像,则原来的镜像会变成 none:none
形式。
解决方法
方法一
官方给出,执行命令 docker image prune
来清理,如果镜像被容器使用则报错。
docker image prune [OPTIONS]
<选项> |
方法二
先停止容器、再删除镜像中的容器、最后删除none的镜像。执行命令如下:
docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }') #停止容器 |
方式三(推荐)
当使用 Docker
进行多阶段构建或者更新镜像版本后,查看所有镜像会发现产生一些 tag
为 none
的无用镜像,这些镜像被称为悬挂镜像 (dangling image)。
# 查看所有镜像 |
其他方式
批量删除tag为””镜像可以采用如下方法(下面两种方式均可以):
docker rmi $(docker images | grep "^<none>" | awk "{print $3}") |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 htdocs!