Docker 删除及清理镜像的方法

作者:huayang183 时间:2022-09-09 09:08:26 

一、通过标签删除镜像

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

docker rmi [image]

或者:

docker image rm [image]

支持的子命令如下:

  • -f, -force: 强制删除镜像,即便有容器引用该镜像;

  • -no-prune: 不要删除未带标签的父镜像;

Docker 删除及清理镜像的方法

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

docker rmi allen_mysql:5.7

Docker 删除及清理镜像的方法

从上面章节中,我们知道 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 删除及清理镜像的方法

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

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

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

Docker 删除及清理镜像的方法

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

二、通过 ID 删除镜像

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

docker rmi ee7cbd482336

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

三、删除镜像的限制

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

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

Docker 删除及清理镜像的方法

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

Docker 删除及清理镜像的方法

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

docker rmi -f docker.io/alpine

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

  • 先删除引用这个镜像的容器;

  • 再删除这个镜像;

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

docker rm 9d59e2278553

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

docker rmi 5cb3aa00f899

Docker 删除及清理镜像的方法

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

四、清理镜像

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

docker image prune

它支持的子命令有:

  • -a, --all: 删除所有没有用的镜像,而不仅仅是临时文件;

  • -f, --force:强制删除镜像文件,无需弹出提示确认;

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

来源:https://blog.csdn.net/qq_18671415/article/details/116231314

标签:Docker,删除,清理,镜像
0
投稿

猜你喜欢

  • 什么是合理的网站关键字

    2008-06-11 12:39:00
  • Win10 + Ubuntu 16.04双系统完美安装教程【详细】

    2023-11-05 09:26:38
  • 使用虚拟机VMware安装Ubuntu 20.04的全教程

    2023-06-30 03:40:08
  • dede5.3关于联动菜单的调用

    2009-02-15 09:45:00
  • 用docker运行postgreSQL的方法步骤

    2023-09-01 13:57:12
  • Linux基础之xargs命令的入门实例

    2023-10-10 20:13:54
  • 详细全面介绍什么是 Apache服务器

    2010-05-08 17:50:00
  • 写好和维持准确元标记 让谷歌顺利找到你

    2009-01-20 10:13:00
  • Linux下使用Evolution收发Email

    2010-03-11 18:58:00
  • 上传漏洞解析-小韩网站编程安全系列二

    2007-07-13 10:08:00
  • 如何在一台服务器上实现多个Web站点

    2008-09-12 14:52:00
  • 修改Windows Vista桌面图标的显示文本

    2007-04-09 10:20:00
  • “米农”半夜“刨”好域名卖好价钱

    2009-10-14 15:32:00
  • 什么样的网站放Google AdSense最理想

    2007-10-12 19:09:00
  • 带着学习的态度来分享下自己运营SNS的一些经验

    2009-02-03 14:46:00
  • Windows 2000中任务时间表的帐号问题

    2007-10-18 14:35:00
  • 支付宝体验版体验动画出炉!

    2010-01-12 16:59:00
  • WordPress如何防止博客内容被重复收录

    2008-04-28 12:18:00
  • 中国网游山寨化严重:新游戏3天就被山寨

    2009-10-23 07:48:00
  • 安全:保护DNS服务器十大技巧

    2009-06-16 14:49:00
  • asp之家 网站运营 m.aspxhome.com