前言
docker虚悬镜像是docker里面出现一种状态为dangling的镜像,这种情况比较少见,几乎都是人工失误造成的
参考博客https://blog.csdn.net/LHRan_ran_/article/details/145635763
探究
虚悬镜像出现的情景
目前我遇到的只有两种情况出现虚悬镜像
- 构建镜像被手动中断
- 存在基于某镜像的容器时,强制删除该镜像
我对于虚悬镜像的理解就是某个镜像丢失或没有标签,那么为何为造成这个样子呢?
实践
测试1:在存在同ID的镜像时强制删除镜像
下载nginx镜像并重新打标签
docker pull nginx:alpine
docker tag nginx:alpine nginx:test
docker tag nginx:alpine harbor.A.com/library/nginx:alpine基于nginx:test运行一个容器
docker run -d -it nginx:test ping 10.0.0.0强制删除nginx:test镜像
docker rmi nginx:test -f检查
docker ps可以看见,容器的镜像名从 nginx:test变成了 93f9c72967db(镜像ID),并且由于现存的两个镜像中存在该ID,导致没有出现虚悬镜像
这里我们可以得出一个结论,并不是存在基于某镜像的容器时,强制删除该镜像就会导致出现虚悬镜像,其根本在于镜像ID
说白了只要镜像ID相同,多个同ID镜像本质上就是同一个镜像,虚悬镜像只是保证容器必须基于某个镜像才存在的,但是既然存在同ID的镜像,那么虚悬镜像也就没有存在的必要
基于该镜像运行容器
docker run -d -it nginx:test ping 10.0.0.0强制删除
docker rmi nginx:test -f总结:在存在同ID的镜像时强制删除镜像不会产生虚悬镜像
补:虚悬镜像的删除
#手动删除docker rmi也是可以的
docker image prune
本文著作权归作者 [ wymm ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。






