跳到主要内容

Docker DanglingUnused Images

· 阅读需 2 分钟
素明诚
Full stack development

Dangling Images(悬空镜像)

定义这些镜像在本地存在,但是在 Docker 仓库中已经不存在对应的标签了。通常是因为镜像的标签被更新或删除导致的。

特点它们没有标签,只有镜像 ID。

产生原因

  • 构建一个新版本的镜像,自动取消旧版本镜像的标签。
  • 手动删除一个镜像的标签。
  • 使用docker pull拉取一个已有标签的新版本镜像,旧版本镜像标签被取消。

识别方法使用命令docker images -f dangling=true列出所有悬空镜像。

Unused Images(未使用镜像)

定义这些镜像不是任何容器的基础镜像,也不是任何镜像的父镜像。

特点它们可能有标签,但是已经不被需要了。

产生原因

  • 某个容器或者镜像被删除,依赖于它的镜像层也随之变为未使用。
  • 手动删除一个容器或镜像。

识别方法使用命令docker images -f dangling=false并手动识别那些未被使用的镜像。Docker 目前没有提供自动识别 Unused Images 的命令。

清理 Dangling Images

使用命令docker rmi $(docker images -f dangling=true -q)删除所有悬空镜像。

使用 Docker 1.13 版本提供的docker system prune命令自动清理悬空镜像。

清理 Unused Images

手动识别并删除那些已知不再需要的镜像,使用docker rmi <image_id>命令。

谨慎使用docker system prune -a命令自动删除所有未使用镜像,此操作不可恢复。

清理时的注意事项

清理前确保不需要这些镜像,清理操作不可恢复。

如果一个悬空镜像同时也是一个未使用镜像,使用docker image prune或者docker system prune命令就足够了。

定期清理不需要的镜像,以节省磁盘空间。但不要过于频繁。