首页

源码搜藏网

首页 > 开发教程 > Web前端 >

Docker删除及清理镜像的方法

创建时间:2022-03-06 18:07  

一、通过标签删除镜像

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

docker rmi [image]

或者:

docker image rm [image]

支持的子命令如下:

Docker删除及清理镜像的方法

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

docker rmi allen_mysql:5.7

Docker删除及清理镜像的方法

从上面章节中,我们知道allen_mysql:5.7docker.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

它支持的子命令有:

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

到此这篇关于Docker 删除及清理镜像的方法的文章就介绍到这了,更多相关Docker 删除及清理镜像内容请搜索源码搜藏网以前的文章或继续浏览下面的相关文章希望大家以后多多支持源码搜藏网!

上一篇:教你使用zabbixapi批量添加数百台监控主机的方法
下一篇:nginx负载均衡轮询方式配置详解

相关内容

热门推荐

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
/ 7