一、通过标签删除镜像

通过如下两个都可以删除镜像:

docker rmi [image]

或者:

docker image rm [image]

支持的子命令如下:

  • -f, -force: 强制删除镜像,即便有容器引用该镜像;
  • -no-prune: 不要删除未带标签的父镜像;

例如,我们想删除上章节创建的 allen_mysql:5.7 镜像,命令如下:

docker rmi allen_mysql:5.7

从上面章节中,我们知道 allen_mysql:5.7 和 docker.io/mysql:5.7 实际上指向的是同一个镜像,那么,您可以能会有疑问,我删除了 allen_mysql:5.7, 会不会将 docker.io/mysql:5.7 镜像也给删除了?

实际上,当同一个镜像拥有多个标签时,执行 docker rmi 命令,只是会删除了该镜像众多标签中,您指定的标签而已,并不会影响原始的那个镜像文件。

不信的话,我们可以执行 docker images 命令,来看下 docker.io/mysql:5.7 镜像还在不在:

可以看到,docker.io/mysql:5.7 镜像依然存在!

那么,如果某个镜像不存在多个标签,当且仅当只有一个标签时,执行删除命令时,您就要小心了,这会彻底删除镜像。

例如,这个时候,我们再执行 docker rmi docker.io/mysql:5.7 命令:

从上图可以看到,我们已经删除了 docker.io/mysql:5.7 镜像的所有文件层。该镜像在本地已不复存在了!

二、通过 ID 删除镜像

除了通过标签名称来删除镜像,我们还可以通过制定镜像 ID, 来删除镜像,如:

docker rmi ee7cbd482336

一旦制定了通过 ID 来删除镜像,它会先尝试删除所有指向该镜像的标签,然后在删除镜像本身。

三、删除镜像的限制

删除镜像很简单,但也不是我们何时何地都能删除的,它存在一些限制条件。

当通过该镜像创建的容器未被销毁时,镜像是无法被删除的。为了验证这一点,我们来做个试验。首先,我们通过 docker pull alpine 命令,拉取一个最新的 alpine 镜像, 然后启动镜像,让其输出 hello, docker!:

接下来,我们来删除这个镜像试试:

可以看到提示信息,无法删除该镜像,因为有容器正在引用他!同时,这段信息还告诉我们,除非通过添加 -f 子命令,也就是强制删除,才能移除掉该镜像!

docker rmi -f docker.io/alpine

但是,我们一般不推荐这样暴力的做法,正确的做法应该是:

  1. 先删除引用这个镜像的容器;
  2. 再删除这个镜像;

也就是,根据上图中提示的,引用该镜像的容器 ID (9d59e2278553), 执行删除命令:

docker rm 9d59e2278553

然后,再执行删除镜像的命令:

docker rmi 5cb3aa00f899

这个时候,就能正常删除了!

四、清理镜像

我们在使用 Docker 一段时间后,系统一般都会残存一些临时的、没有被使用的镜像文件,可以通过以下命令进行清理:

docker image prune

它支持的子命令有:

  • -a, --all: 删除所有没有用的镜像,而不仅仅是临时文件;
  • -f, --force:强制删除镜像文件,无需弹出提示确认;

另外,执行完 docker image prune 命令后,还是告诉我们释放了多少存储空间!

Docker 如何删除及清理镜像相关推荐

  1. docker 批量删除容器和镜像

    docker 批量删除容器和镜像 1,删除单个镜像或者容器 docker  rmi  镜像ID/镜像名字:TAG docker  rm  容器ID/容器名字 1.停止所有的container,这样才能 ...

  2. docker 占用磁盘空间清理 无用数据卷删除

    目录 1.删除未被任何容器使用的本地卷 2. Docker System命令 3. 手动清理Docker镜像/容器/数据卷 3. 限制容器的日志大小 4. 重启Docker 1.删除未被任何容器使用的 ...

  3. Docker删除容器与镜像

    列出所有容器ID docker ps -aq 查看所有运行或者不运行容器 docker ps -a 停止所有的container(容器),这样才能够删除其中的images: docker stop $ ...

  4. docker清空为none的镜像

    2019独角兽企业重金招聘Python工程师标准>>> # 停止和删除Exited的docker实例 docker ps -a | grep "Exited" | ...

  5. Docker Registry 私有镜像仓库批量清理镜像

    Docker 私有镜像仓库批量清理镜像 前言 在频繁长期使用镜像仓库后,由于镜像仓库清理镜像比较费劲,业内也没有一个比较好的清理方案,官方提供的镜像仓库清理也比较费劲,导致 Docker 镜像仓库越积 ...

  6. docker强制删除none的image镜像

    昨晚使用dockerfile生成一个镜像,中途断网了,导致p_w_picpaths的REPOSITORY出现<none> 他的名字和tag都是为none 错误提示: Failed to r ...

  7. docker tag 删除images_docker实现重新打tag并删除原tag的镜像

    docker镜像id是唯一的,可以物理性的标明一个镜像,repository:tag可以有多个,但是也不会重复,也是唯一的. 要重新打tag的话,语法是: docker tag imageId rep ...

  8. 一文搞定docker创建私有镜像仓库(配置启动http和https方式私有仓库服务,查询、删除私有仓库镜像)

    docker除了使用公共镜像仓库之外,也可以创建私有镜像仓库.对于内部开发.测试.部署环境来说,是很有必要的.        如何创建私有镜像仓库服务呢?当然是以容器的方式啦! 1.拉取官方regis ...

  9. docker问题之相同id镜像删除以及正在运行容器的镜像删除

    docker问题之镜像删除 今天在Ubuntu下搭建apache时,始终无法进入自己写的页面,浏览器输入127.0.0.1依旧是apache官网页面,心想是不是dockerfile出了问题,一查看,果 ...

最新文章

  1. SQLServer镜像状态异常排查
  2. 基于plc计算机控制系统,基于PLC的工业控制系统特点的分析
  3. P4245 【模板】任意模数多项式乘法
  4. JUnit,Logback,带有Maven 3的Maven
  5. Androd开发之广告栏设计
  6. sparkR介绍及安装
  7. picker.js源码
  8. HTML标记语言——表单的详细使用说明
  9. 【汇编语言】【ARM扩展资料】汇编语言开发
  10. python实现归并算法
  11. 阿里大于短信返回XML
  12. 海外邮件收发阻碍多?【企业邮箱怎么申请】
  13. 蔡学镛[散文随笔]:从A到E+ (转)
  14. rust的所有权与引用
  15. android 2.3.6Gallary源码导入到Eclipse中编译
  16. BUUCTF rsarsa
  17. 怎样让一个正常人理解“线性代数”。几乎花掉我全部百度金币下来的文章。
  18. mysql的事件开启,停止和启动
  19. 吴恩达深度学习——读书笔记
  20. 程序员科班出身的专业有哪些?

热门文章

  1. python物体跟着鼠标走_用Python写一个跟随鼠标运动的自定义窗口
  2. linux查看文件元数据,Linux切换目录、查看目录下的文件、文件类型介绍和查看文件的元数据信息...
  3. c语言程序设计实验8,C语言程序设计实验八结构体.doc
  4. vscode快捷键:多行同时输入
  5. 微机笔记——1.微型计算机概述
  6. 吴恩达机器学习ex8:异常检测
  7. Java基础(三)——反射、代理
  8. 函数中结构体指针作为形参修改指针地址
  9. 时隔25年重访 Linus:流量时代的“技术大师”
  10. mysql 5.6.41编译安装详细步骤