• 搜索
  • 夜间模式
    ©2026  依刻学习 Theme by OneBlog

    依刻学习博客

    搜索
    标签
  • 首页>
  • 学习的一天>
  • 正文
  • docker虚悬镜像探究

    2025年03月29日 24 阅读 0 评论 1699 字

    前言

    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

    可以发现镜像名变为了镜像ID

    可以看见,容器的镜像名从 nginx:test变成了 93f9c72967db(镜像ID),并且由于现存的两个镜像中存在该ID,导致没有出现虚悬镜像

    这里我们可以得出一个结论,并不是存在基于某镜像的容器时,强制删除该镜像就会导致出现虚悬镜像,其根本在于镜像ID
    说白了只要镜像ID相同,多个同ID镜像本质上就是同一个镜像,虚悬镜像只是保证容器必须基于某个镜像才存在的,但是既然存在同ID的镜像,那么虚悬镜像也就没有存在的必要

    测试2
    重设一个nginx,此时仅有一个nginx

    基于该镜像运行容器

    docker run -d -it nginx:test ping 10.0.0.0

    强制删除

    docker rmi nginx:test -f


    出现虚悬镜像

    总结:在存在同ID的镜像时强制删除镜像不会产生虚悬镜像

    补:虚悬镜像的删除

    #手动删除docker rmi也是可以的
    docker image prune
    本文著作权归作者 [ wymm ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    取消回复

    发表留言
    回复

    Copyright©2026  All Rights Reserved.  Load:0.032 s
    Theme by OneBlog V3.6.5
    夜间模式

    开源不易,请尊重作者版权,保留基本的版权信息。