本人github
悬空的镜像(Dangling Images)是指在 Docker 主机上存在的镜像,但是这些镜像既没有标签(tag),也没有被任何容器引用。换句话说,悬空镜像是没有完整元数据信息的镜像,通常是由于以下原因导致的:
-
构建新镜像时,如果指定了与现有镜像相同的标签,Docker 会将旧镜像上的标签移除,并将其分配给新镜像。这会导致旧镜像变成悬空状态。
-
当你使用
docker pull
命令拉取镜像的新版本时,如果本地已经存在同名的旧版本镜像,旧版本镜像的标签会被移除,从而变成悬空状态。 -
当你使用
docker build
命令构建镜像时,每个中间层都会创建一个临时的镜像。如果构建过程中某个步骤失败或被取消,这些临时的中间层镜像就会变成悬空状态。
悬空镜像通常以 <none>:<none>
的形式显示在 docker images
命令的输出中,表示它们没有标签和仓库名称。
示例输出:
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> c8cbb4e57e37 3 days ago 132MB
<none> <none> f1e9b8f92f63 3 days ago 448MB
悬空镜像会占用 Docker 主机的磁盘空间,但是由于没有完整的元数据信息,它们通常没有实际用途。为了释放磁盘空间并保持 Docker 主机的整洁,建议定期清理悬空镜像。
你可以使用以下命令来删除悬空镜像:
docker image prune
这个命令会自动删除所有悬空的镜像,而不会影响正在使用的镜像和容器。
如果你想删除所有未使用的镜像,包括悬空镜像和未被引用的镜像,可以使用以下命令:
docker image prune -a
请注意,docker image prune -a
命令会删除所有未使用的镜像,包括你可能还需要使用的镜像。在执行该命令之前,请仔细检查你是否真的要删除所有未使用的镜像,并且确保已经备份了重要的数据。
定期清理悬空镜像和未使用的镜像可以帮助你优化 Docker 主机的磁盘空间利用率,并保持 Docker 环境的整洁和高效。