Docker 删除及清理镜像的方法

 更新时间:2022年03月06日 10:33:23   作者:huayang183  
本文主要介绍了Docker 删除及清理镜像的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

脚本之家 / 编程助手:解决程序员“几乎”所有问题!
脚本之家官方知识库 → 点击立即使用

一、通过标签删除镜像

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

1
docker rmi [image]

或者:

1
docker image rm [image]

支持的子命令如下:

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

Docker 查看镜像信息

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

1
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, 来删除镜像,如:

1
docker rmi ee7cbd482336

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

三、删除镜像的限制

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

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

Docker run alpine

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

Docker 删除镜像

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

1
docker rmi -f docker.io/alpine

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

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

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

1
docker rm 9d59e2278553

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

1
docker rmi 5cb3aa00f899

Docker 删除镜像

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

四、清理镜像

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

1
docker image prune

它支持的子命令有:

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

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

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

蓄力AI

微信公众号搜索 “ 脚本之家 ” ,选择关注

程序猿的那些事、送书等活动等着你

原文链接:https://blog.csdn.net/qq_18671415/article/details/116231314

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!

相关文章

  • Rancher+Docker+SpringBoot实现微服务部署、扩容、环境监控

    Rancher+Docker+SpringBoot实现微服务部署、扩容、环境监控

    Rancher 是一套容器管理平台,可以在生产环境中快捷的部署和管理容器,方便的对容器进行cpu内存环境监控、日志监控、扩容缩容,自动重启,这篇文章主要介绍了Rancher+Docker+SpringBoot实现微服务部署、扩容、环境监控,需要的朋友可以参考下
    2022-04-04
  • docker中如何启动已存在容器

    docker中如何启动已存在容器

    这篇文章主要介绍了docker中如何启动已存在容器问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • 使用Docker安装detectron2的配置方法

    使用Docker安装detectron2的配置方法

    Detectron2 是一个用于目标检测、分割和其他视觉识别任务的平台,下面采用 docker 方式在 windows 上安装,对Docker安装detectron2的配置方法感兴趣的朋友一起看看吧
    2024-03-03
  • Dockerfile中ENTRYPOINT 和 CMD的区别说明

    Dockerfile中ENTRYPOINT 和 CMD的区别说明

    这篇文章主要介绍了Dockerfile中ENTRYPOINT 和 CMD的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 浅谈Docker如何自定义host文件

    浅谈Docker如何自定义host文件

    本文主要介绍了Docker如何自定义host文件,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 详解Docker 端口映射与容器互联

    详解Docker 端口映射与容器互联

    这篇文章主要介绍了详解Docker 端口映射与容器互联 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Docker镜像与容器的导入导出以及常用命令总结

    Docker镜像与容器的导入导出以及常用命令总结

    Docker是一个开源的容器引擎,基于go语言开发并遵循了apache2.0协议开源,下面这篇文章主要给大家介绍了关于Docker镜像与容器的导入导出以及常用命令总结的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • docker system prune命令使用示例详解

    docker system prune命令使用示例详解

    docker system prune是一个用于清理Docker系统资源的命令,它用于删除未使用的数据(如未使用的镜像、容器、网络和存储卷)以释放磁盘空间,下面这篇文章主要给大家介绍了关于docker system prune命令使用示例的相关资料,需要的朋友可以参考下
    2024-04-04
  • harbor可视化私有镜像仓库环境及服务部署示例

    harbor可视化私有镜像仓库环境及服务部署示例

    这篇文章主要为大家介绍了harbor可视化私有镜像仓库环境及服务部署示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • 使用Docker部署MySQL 5.7&8.0主从集群的方法步骤

    使用Docker部署MySQL 5.7&8.0主从集群的方法步骤

    这篇文章主要介绍了使用Docker部署MySQL 5.7&8.0主从集群的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03

最新评论