Docker本地images删除问题

2023-05-16

背景

测试环境和生产环境 部署了不同的registry服务,通过cli 操作过生产环境或测试环境push/pull image功能。本地虚拟机,docker image 残留了很多image ,现在想删除掉,发现有一个imageid(e9d3f7300f03)无法删除。

原因:docker rmi 不加-f,只能删除无tag的镜像 ;被曾经打过多处tag(被tag引用),无法直接删除,需要先删除tag,删除曾经启动过的容器,最后才能删除镜像。
此时,tag可比做引用,image为tag指向的对象。

测试环境

export QCOSINDEXHOST=https://index-dev.qiniu.io/
mashaofang:Documents shaofangma$ kirk images
IMAGE                            DIGEST                                                          ACCESS        SIZE      CREATED
cs-kirk/nginx:latest             sha256:c7c1149150a8f7536bd19b70ea34748bf9dfbc93e5dee677f11..    READ/WRITE    47 MB     6 months

发现对应本地docker images中的 registry:index-dev.qiniu.io/cs-kirk/nginx

生产环境

export QCOSINDEXHOST= https://index.qiniu.com/
找不到。。
发现对应本地docker images中的 registry:index.qiniu.com/qcos-test/msfngix
因为一次线上事故,导致镜像丢失。

docker images 本地

mashaofang:Documents shaofangma$ docker images
REPOSITORY                                             TAG                 IMAGE ID            CREATED             SIZE
index-dev.qiniu.io/cs-kirk/nginx                       latest              e9d3f7300f03        6 months ago        124.8 MB
index-dev.qiniu.io/index.qbox.me/qcos-test/msfngix     latest              e9d3f7300f03        6 months ago        124.8 MB
index-dev.qiniu.io/index.qiniu.com/qcos-test/msfngix   latest              e9d3f7300f03        6 months ago        124.8 MB
index.qbox.me/qcos-test/msfngix                        latest              e9d3f7300f03        6 months ago        124.8 MB
index.qiniu.com/index.qbox.me/qcos-test/msfngix        latest              e9d3f7300f03        6 months ago        124.8 MB
index.qiniu.com/qcos-test/msfngix                      latest              e9d3f7300f03        6 months ago        124.8 MB
index.qiniu.com/ubuntu                                 latest              e9d3f7300f03        6 months ago        124.8 MB
index-dev.qiniu.io/cs-kirk/nginx                       <none>              e9d3f7300f03        6 months ago        124.8 MB
index.qiniu.com/qcos-test/msfngix                      <none>              e9d3f7300f03        6 months ago        124.8 MB
index.qiniu.com/ubuntu                                 <none>              e9d3f7300f03        6 months ago        124.8 MB

执行docker rmi e9d3f7300f03,报error:
原因 :

镜像被打成不同的tag,现在多个tag引用同一个镜像,因为image id(e9d3f7300f03)都相同。估计都是ubuntu镜像,但当时是初学者,tag名字打成了msfnginx。
此时,与曾经push到远端不同registry的镜像没有关系,该命令只是docker client 删除本地image。


mashaofang:Documents shaofangma$ docker rmi e9d3f7300f03
Error response from daemon: conflict: unable to delete e9d3f7300f03 (must be forced) - image is referenced in one or more repositories

成功删除的docker image

////没有tag在引用的image可以直接删除

mashaofang:Documents shaofangma$ docker images
REPOSITORY                                             TAG                 IMAGE ID            CREATED             SIZE
index.qiniu.com/ubuntu                                 16.04               966495178565        6 months ago        124.8 MB
index.qiniu.com/ubuntu                                 <none>              966495178565        6 months ago        124.8 MB

mashaofang:Documents shaofangma$ docker rmi 966495178565
Untagged: index.qiniu.com/ubuntu:16.04
Untagged: index.qiniu.com/ubuntu@sha256:14c83946c7d69370743eee1249305854a25d95f37d7d5dc0bcfd2c740140bdab
Deleted: sha256:966495178565397219d95af298ecfc2ea64586503bafb9ed5dd5a34134487cab
Deleted: sha256:7f0c52e8b6b95d7eea4d97ccc11f001a9caab1d71d31c29386dcffc61fed7801
Deleted: sha256:0f59a28dcf9826aaf6432bc5192f2789a31b2a4e28387a039d24de2689f753c0

////有tag在引用的image 可以-f强制删除,或者先删除tag 再rm 由此tag 启动过的container,最后删除image

解决方案1,最后使用杀手锏 -f

mashaofang:Documents shaofangma$ docker images
REPOSITORY                                             TAG                 IMAGE ID            CREATED             SIZE
index-dev.qiniu.io/cs-kirk/nginx                       latest              e9d3f7300f03        6 months ago        124.8 MB
index-dev.qiniu.io/index.qbox.me/qcos-test/msfngix     latest              e9d3f7300f03        6 months ago        124.8 MB
index-dev.qiniu.io/index.qiniu.com/qcos-test/msfngix   latest              e9d3f7300f03        6 months ago        124.8 MB
index.qbox.me/qcos-test/msfngix                        latest              e9d3f7300f03        6 months ago        124.8 MB
index.qiniu.com/index.qbox.me/qcos-test/msfngix        latest              e9d3f7300f03        6 months ago        124.8 MB
index.qiniu.com/qcos-test/msfngix                      latest              e9d3f7300f03        6 months ago        124.8 MB
index.qiniu.com/ubuntu                                 latest              e9d3f7300f03        6 months ago        124.8 MB
index-dev.qiniu.io/cs-kirk/nginx                       <none>              e9d3f7300f03        6 months ago        124.8 MB
index.qiniu.com/qcos-test/msfngix                      <none>              e9d3f7300f03        6 months ago        124.8 MB
index.qiniu.com/ubuntu                                 <none>              e9d3f7300f03        6 months ago        124.8 MB
mashaofang:Documents shaofangma$ docker rmi -f e9d3f7300f03
Untagged: index-dev.qiniu.io/cs-kirk/nginx:latest
Untagged: index-dev.qiniu.io/cs-kirk/nginx@sha256:c7c1149150a8f7536bd19b70ea34748bf9dfbc93e5dee677f11362c06b12735d
Untagged: index-dev.qiniu.io/index.qbox.me/qcos-test/msfngix:latest
Untagged: index-dev.qiniu.io/index.qiniu.com/qcos-test/msfngix:latest
Untagged: index.qbox.me/qcos-test/msfngix:latest
Untagged: index.qiniu.com/index.qbox.me/qcos-test/msfngix:latest
Untagged: index.qiniu.com/qcos-test/msfngix:latest
Untagged: index.qiniu.com/qcos-test/msfngix@sha256:c7c1149150a8f7536bd19b70ea34748bf9dfbc93e5dee677f11362c06b12735d
Untagged: index.qiniu.com/ubuntu:latest
Untagged: index.qiniu.com/ubuntu@sha256:c7c1149150a8f7536bd19b70ea34748bf9dfbc93e5dee677f11362c06b12735d
Deleted: sha256:e9d3f7300f03338534ee351fafc108fa911ae1d08ef1a0cc55a880143d57f65d
Deleted: sha256:55c1cfa314a680da7086fdba81d351d837901d0c2762ba8cea17870cc9857c0d
Deleted: sha256:7b30e626a41da838be8de0ea78996c48b8cfbf132329d1842ff55482198789a7
Deleted: sha256:d72d0199021776e77ac14a764a3decd156e9f6f18b37e25b867b0f1ca42fb3d9
Deleted: sha256:fb178c6cea1453d089ce033b96eba0efdb42274138e042517ea2d5ea7bb51665
Deleted: sha256:8945af30572845a904adce2aeaf73402c842d86e99e8f10688b25cb27834110b
Deleted: sha256:ea9f151abb7e06353e73172dad421235611d4f6d0560ec95db26e0dc240642c1

解决方案2,先删除tag 再rm 由此tag 启动过的container,最后删除image

#删除tag
docker rmi  index-dev.qiniu.io/cs-kirk/nginx:latest
docker rmi index-dev.qiniu.io/cs-kirk/nginx@sha256:c7c1149150a8f7536bd19b70ea34748bf9dfbc93e5dee677f11362c06b12735d
#删除曾经启动过的容器
docker rm containerid
#删除没有tag的镜像
docker rmi e9d3f7300f03

批量删除本地images

 docker rmi $(docker images |awk '{if($2=="<none>")  print $3}')

注意这个不会影响已经push到远程registry(index.qiniu.com/index.qbox.me/index-dev.qiniu.io)的镜像。

mashaofang:Documents shaofangma$ kirk info
ID            ACCOUNT    APP                   REGION
1380537556    cs-kirk    cs-kirk.mashaofang    cs
kirk 0.5.5 is now available (current: 0.5.3). Use 'kirk upgrade' to upgrade to latest version.
mashaofang:Documents shaofangma$ kirk images
IMAGE                            DIGEST                                                                     ACCESS        SIZE      CREATED
cs-kirk/nginx:latest             sha256:c7c1149150a8f7536bd19b70ea34748bf9dfbc93e5dee677f11362c06b12735d    READ/WRITE    47 MB     6 months

镜像唯一识别的是image id&摘要,一个镜像可以有多个标签。

因此当我们使用上面命令删除镜像的时候,实际上是在要求删除某个标签的镜像。所以首先需要做的是将满足我们要求的所有镜像标签都取消,这就是我们看到的 Untagged 的信息。因为一个镜像可以对应多个标签,因此当我们删除了所指定的标签后,可能还有别的标签指向了这个镜像,如果是这种情况,那么 Delete 行为就不会发生。所以并非所有的 docker rmi 都会产生删除镜像的行为,有可能仅仅是取消了某个标签而已。

当该镜像所有的标签都被取消了,该镜像很可能会失去了存在的意义,因此会触发删除行为。镜像是多层存储结构,因此在删除的时候也是从上层向基础层方向依次进行判断删除。镜像的多层结构让镜像复用变动非常容易,因此很有可能某个其它镜像正依赖于当前镜像的某一层。这种情况,依旧不会触发删除该层的行为。直到没有任何层依赖当前层时,才会真实的删除当前层。这就是为什么,有时候会奇怪,为什么明明没有别的标签指向这个镜像,但是它还是存在的原因,也是为什么有时候会发现所删除的层数和自己 docker pull 看到的层数不一样的源。

除了镜像依赖以外,还需要注意的是容器对镜像的依赖。如果有用这个镜像启动的容器存在(即使容器没有运行),那么同样不可以删除这个镜像。之前讲过,容器是以镜像为基础,再加一层容器存储层,组成这样的多层存储结构去运行的。因此该镜像如果被这个容器所依赖的,那么删除必然会导致故障。如果这些容器是不需要的,应该先将它们删除,然后再来删除镜像。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker本地images删除问题 的相关文章

  • 【Linux多线程编程-自学记录】09.Linux多线程之读写锁

    Linux多线程编程学习代码 xff08 代码已上传gitee xff0c 还请各位兄弟点个Star哦 xff01 xff09 https gitee com chenshao777 linux thread git 笔记 xff1a 1
  • 【Linux多线程编程-自学记录】10.条件变量

    Linux多线程编程学习代码 xff08 代码已上传gitee xff0c 还请各位兄弟点个Star哦 xff01 xff09 https gitee com chenshao777 linux thread git 笔记 xff1a 1
  • 树莓派4B安装Ros 2 Foxy踩坑记录

    1 通过树莓派官方提供的写卡工具raspberry pi imager选择Ubuntu 20 04 5 xff08 64 bit xff09 xff0c 因为我打算用一个8G的存储卡安装ros 2 xff0c Ubuntu 22 04的比较
  • 港科大vins-fusion初探

    SLAM新手 xff0c 欢迎讨论 关于vins fusion的博客 xff1a 1 初探 xff1a https blog csdn net huanghaihui 123 article details 86518880 2 vio主体
  • vins-fusion代码解读[一] vio主体

    SLAM新手 xff0c 欢迎讨论 港科大vins fusion代码解读 一 vins fusion与vins mono代码结构有很大相似性 这次先看看vins estimator节点内的内容 1 程序入口 xff1a 1 vins est
  • vins-fusion代码解读[二] 惯性视觉里程结果与GPS松耦合

    感谢 slam萌新 xff0c 本篇博客部分参考 xff1a https blog csdn net weixin 41843971 article details 86748719 欢迎讨论 惯性视觉里程结果与GPS松耦合 xff1a g
  • vins-fusion代码解读[四] 图像回环检测loop_fusion主体

    SLAM新手 xff0c 欢迎讨论 这篇主要讲loop fusion包的程序结构 xff0c loop fusion主要作用 xff1a 利用词袋模型进行图像的回环检测 在vinsmono中 xff0c 该程序包处于pose graph包内
  • 基于乐鑫开源ESP32四轴无人机项目分享

    上次说重新焊接一块的 xff0c 周末搞定了 xff0c 基本组装的也完成了 xff0c 上个图 试飞还是可以的 xff0c 因为没有光流和定高模块 xff0c 所以稳定性不是很好 xff0c 不过乐鑫预留了扩展模块的接口 xff0c 大家
  • vins-回环检测单独剥离运行

    由于前端如果单纯依靠视觉 43 imu作为里程计 效果经常不稳定 因此最近做项目的过程中 xff0c 将前端转化为以里程计 xff08 码盘编码器 xff09 来进行 xff0c 相对比较鲁棒 由于这个局部传感器有累计误差 xff0c 因此
  • apt 的 update 和 upgrade 命令的区别是什么?

    如果想让你的 Ubuntu 或者 Debian 系统保持更新 xff0c 要用 sudo apt update 和 sudo apt upgrade 命令组合 一些以前的教程也会提到 sudo apt get update 和 sudo a
  • Ubuntu 下 ROS 使用 serial 包进行无线串口通信

    1 查看本机当前USB 串口设备 查看当前已连接的 USB 设备 xff1a lsusb 查看电脑连接的USB 转串口的信息 xff1a dmesg grep ttyUSB 查看电脑连接的串口的信息 xff1a dmesg grep tty
  • 画PCB时,一些非常好的布线技巧

    布线是PCB设计过程中技巧最细 限定最高的 xff0c 即使布了十几年布线的工程师也往往觉得自己不会布线 xff0c 因为看到了形形色色的问题 xff0c 知道了这根线布了出去就会导致什么恶果 xff0c 所以 xff0c 就变的不知道怎么
  • 不能错过的4本Linux好书

    2010年大学毕业 xff0c 在Linux下编程已三年有余了 最近看论坛上不少朋友谈论看过的编程 xff08 Linux xff09 书籍 xff0c 我感触良多 回头想想 xff0c 当初那个一无所知 xff0c 而且老是爱问白痴问题的
  • 微策略2017年秋招线下笔试+技术面+在线测评+主管面总结

    1 前言 微策略可能在国内的知名度比较小 xff0c 它是一家总部在美国 xff0c 在杭州设立研发中心 xff0c 主要做智能商用软件的外企 更多的信息 xff0c 请自行搜索 我是17年10月份面试微策略 xff0c 然后拿到的开发 x
  • github,dockerhub下载文件

    1 打开github xff0c dockerhub代理页面 xff0c 见菜单点击可进入dockerhub代理页面 github下载代理 2 把需要下载的文件的url复制到输入框 3 常用的脚本命令 git clone git clone
  • C++ 开源程序库

    1 系统和网络编程库 xff1a ACE 除了ACE之外 xff0c 还有很多系统和网络编程方面的程序库 比如在线程库方面 xff0c 还有ZThread boost thread xff0c 如果放大到C C 43 43 领域 xff0c
  • 360笔试题2013

    编程题 传教士人数M xff0c 野人C xff0c M C xff0c 开始都在岸左边 xff0c 船只能载两人 xff0c 传教士和野人都会划船 xff0c 当然必须有人划船 两岸边保证野人人数不能大于传教士人数 把所有人都送过河 xf
  • 搜狗笔试题

    搜狗 xff1a 1 xff0c 有n n个正方形格子 xff0c 每个格子里有正数或者0 xff0c 从最左上角往最右下角走 xff0c 只能向下和向右走 一共走两次 xff0c 把所有经过的格子的数加起来 xff0c 求最大值 且两次如
  • [INS-20802] Oracle Net Configuration Assistant failed

    INS 20802 Oracle Net Configuration Assistant failed 在安装Oracle 11g R2时出现了该错误提示 以前安装的时候没有碰到过类似 的错误 原来是64bit和32bit系统兼容性的问题
  • 自定义注解,打造自己的框架-下篇

    2019 12 04 22 53 52 文章目录 结构声明注解声明注解处理器处理注解逻辑给使用者提供调用方法使用 该系列介绍自定义注解 xff0c 完成如下功能 64 BindView 代替 findViewById 64 ClickRes

随机推荐

  • 嵌入式STM32深入之RTOS编程

    RTOS编程 一 前言二 RTOS的概念 xff08 一 xff09 用人来类比单片机程序和RTOS1 1 我无法一心多用1 2 我可以一心多用 xff08 二 xff09 架构的概念 xff08 三 xff09 常见的嵌入式操作系统 xf
  • 坐标系变换

    slam 基础之机器人学中的坐标转换学习总结 rot z 90 ppipp1109的博客 CSDN博客 https www youtube com watch v 61 4Y1 y9DI Hw amp t 61 538s 1 平移和旋转 3
  • 如何安装inf文件

    方法1 运行RunDll32 advpack dll LaunchINFSection YOUINF inf DefaultInstall 方法2 修复右键安装 操作步骤如下 xff1a 打开我的电脑 xff0c 工具 菜单中的 文件夹选项
  • 无人机采集图像的相关知识

    1 xff0e 飞行任务规划 一般使用飞行任务规划软件进行飞行任务的设计 xff0c 软件可以自动计算相机覆盖和图像重叠情况 比如ArduPilot http ardupilot com 和UgCS http www ugcs com 是两
  • 无人机编程donekit及通讯(三)——仿真

    1 启动SITL 启动STL cd courseRoot apm ardupilot sim vehicle py v ArduCopter console map 飞机起飞降落 mode GUIDED arm throttle takeo
  • DroneKit(四)——无人机协同

    coding utf8 from dronekit import connect VehicleMode LocationGlobalRelative APIException import time import exceptions i
  • 看这篇就够了——opencv与libopencv与cv_bridge的安装与使用

    一 基本关系 opencv OpenCV的全称是Open Source Computer Vision Library xff0c 是一个跨平台的计算机视觉处理开源软件库 xff0c 是由Intel公司俄罗斯团队发起并参与和维护 xff0c
  • Linux下更改oracle客户端字符集和服务端字符集

    from http blog csdn net chid article details 6166506 Linux 下更改 oracle 客户端字符集和服务端字符集 1 Linux 下更改 oracle 客户端字符集 xff0c 即设置环
  • C语言书籍推荐

    C 语言书籍推荐 宗旨 xff1a 技术的学习是有限的 xff0c 分享的精神是无限的 一 基础 1 C语言入门很简单 零起点学通C语言 xff08 多媒体范例教学 xff09 C语言从入门到精通 2 C程序设计语言 第2版 新版 C程序设
  • Jetson配置realsense D435i SDK以及realsense-ros

    一 命令安装 SDK sudo apt install librealsense2 realsense viewer 测试 realsense ros sudo apt get install ros ROS DISTRO realsens
  • 工程(十一)——NUC11+D435i+VINS-FUSION+ESDF建图(github代码)

    博主的合并代码 git 64 github com huashu996 VINS FUSION ESDFmap git 一 D435i深度相机配置 1 1 SDK 43 ROS 参考我之前的博客 xff0c 步骤和所遇见的问题已经写的很详细
  • 从零入门激光SLAM(八)——ROS常用消息

    大家好呀 xff0c 我是一个SLAM方向的在读博士 xff0c 深知SLAM学习过程一路走来的坎坷 xff0c 也十分感谢各位大佬的优质文章和源码 随着知识的越来越多 xff0c 越来越细 xff0c 我准备整理一个自己的激光SLAM学习
  • 嵌入式软件开发,快五年,没有成就感,快迷失自己了

    嵌入式软件开发 xff0c 快五年 xff0c 没有成就感 xff0c 快迷失自己了 看到了这个的问题 xff0c 其实这个问题何尝不是很多软件开发人员的困惑呢 至少我自己如此 在任何公司 xff0c 个人永远就是一枚螺丝钉的角色 当公司的
  • 从高校中走出的 Apache 顶级项目 —— IoTDB 核心成员黄向东

    本期访谈嘉宾 xff1a 黄向东 Apache 顶级开放源代码项目 IoTDB xff08 物联网数据库 xff09 核心成员 2021 年开源先锋 清华大学软件学院助理研究员 Q xff1a 简单介绍一下 Apache IoTDB IoT
  • pixhawk入门 -- 编译环境问题解决过程

    pixhawk 编译的基本操作步骤 xff1a 1 xff09 下载固件仓 git clone https github com PX4 Firmware git 2 xff09 更新固件代码 cd Firmware git submodu
  • 树莓派的供电问题

    树莓派99 的故障来自于5V电源 树莓派出现任何故障 xff08 死机 键盘和鼠标不工作 显示器变暗或失真 终端程序出现乱码 xff0c 无法开机 xff0c 运行的程序死机 xff0c usb设备无法识别或不工作 网络故障等 xff09
  • 树莓派的操作系统介绍

    1 Raspbian 单纯的Arm版的Linux系统 xff0c 基于Debian 是当前实用最广泛的操作系统 2 Pidora 单纯的Arm版的Linux系统 xff0c 基于Fedora 是拥有另一种风格的树莓派操作系统 3 Arch
  • gd32e103加入freertos的步骤

    gd32E103的芯片比较强大 xff0c m4的内核 xff0c 120mhz主频 xff0c 跑freertos是没有问题的 作为一个轻量级的操作系统 xff0c FreeRTOS提供的功能包括 xff1a 任务管理 时间管理 信号量
  • oracle数据库开启的时候 是先开监听还是先开主服务,关数据库的时候呢???...

    启动的时候无所谓先后 xff0c 关闭的话 1 首先是关闭监听 xff08 让远程客户端无法再连进来 xff09 xff1b 2 发出一个系统检查点 xff0c 让数据文件和控制文件的系统修改号统一 xff1b xff08 alter sy
  • Docker本地images删除问题

    背景 测试环境和生产环境 部署了不同的registry服务 xff0c 通过cli 操作过生产环境或测试环境push xff0f pull image功能 本地虚拟机 xff0c docker image 残留了很多image xff0c