Docker中删除镜像与容器的完整指南

 更新时间:2025年09月29日 08:45:13   作者:孽小倩  
在日常使用 Docker 的过程中,未使用的镜像往往会不断累积,占用大量磁盘空间,学会高效地查找并删除不必要的镜像,不仅能回收存储容量,还能保持系统的整洁,本文将演示如何从系统中删除 Docker 镜像,需要的朋友可以参考下

引言

在日常使用 Docker 的过程中,未使用的镜像往往会不断累积,占用大量磁盘空间。学会高效地查找并删除不必要的镜像,不仅能回收存储容量,还能保持系统的整洁。

本文将演示如何从系统中删除 Docker 镜像,并介绍删除前需要注意的事项。开始之前,我们先了解一下 Docker 的基本概念:什么是 Docker、什么是 Docker 镜像,以及这些镜像存储在何处。

什么是 Docker?

自十多年前发布以来,Docker 一直以其高效可靠的应用构建与部署工具而闻名。它是一个开源平台,利用操作系统级虚拟化技术来构建、测试并无缝部署分布式应用。

什么是 Docker 镜像?

Docker 镜像是用于创建容器的只读模板。镜像中包含应用程序及其所需的依赖包、库、工具和配置文件。基于镜像运行的容器是一个轻量级、独立、隔离的运行单元,可以在不同的平台上保持一致的运行效果。

与传统虚拟机相比,容器具有更高的可移植性、更低的资源开销和更高的效率。但与此同时,镜像和容器也很容易在系统中堆积,造成磁盘空间不足。好在 Docker 提供了命令行工具,方便我们定期清理无用的镜像和容器。

Docker 镜像存储在哪里?

Docker 镜像通常存放在镜像注册中心。默认情况下,它们会存储在 Docker Hub 上,也可以托管在 GitLab、阿里云等第三方镜像库,或者保存在本地磁盘和私有仓库中。

删除镜像前的注意事项

在删除 Docker 镜像之前,需要特别小心。若操作不当,可能会导致容器崩溃或数据丢失。以下是几条常见的预防措施:

1. 检查容器依赖

确保没有正在运行或已停止的容器依赖于该镜像。虽然运行中的容器不直接依赖镜像,但一旦镜像被删除,将无法重新启动这些容器。
检查方法:

docker ps -a --filter ancestor=<image_id_or_name> 

如果输出中有容器,请先停止并删除它们:

docker stop <container_id>
docker rm <container_id>

此外,还要确认该镜像不是其他镜像的基础层。可使用以下命令检查:

docker image inspect <image_id> 

2. 备份数据

除非已在其他地方保存副本,否则不要贸然删除镜像。提前做好备份,可以确保在新版本失败或需要回退时,能够恢复旧容器版本。

3. 确认用途

确认该镜像不再被 Docker Compose、Kubernetes 配置文件或 CI/CD 管道所使用。

4. 更新文档与脚本

若有文档或自动化脚本仍引用旧镜像,请及时更新,以免后续出现问题。

环境准备

本文示例基于 Ubuntu 24.04 环境,且系统中已安装并运行 Docker。如果你尚未安装,可参考如何在 Ubuntu 20.04 或 Ubuntu 24.04 上安装 Docker。

删除 Docker 镜像的几种方法

下面我们演示几种常见的删除方式,包括删除单个镜像、悬空镜像,以及批量删除所有镜像。

1. 删除一个或多个镜像

使用以下命令删除指定镜像:

docker rmi IMAGE_ID 

先列出镜像:

docker images 

若系统没有镜像,只会显示表头。
例如,我们从 Docker Hub 拉取 postgresredis 镜像:

docker pull postgres
docker pull redis

再次查看:

docker images 

假设我们要删除 redis 镜像:

docker rmi <redis_image_id> 

此时仅剩下 postgres。如果要同时删除多个镜像,可以一次传入多个 ID:

docker rmi <id1> <id2> 

2. 删除悬空镜像

悬空镜像(dangling image) 是指没有标签(:)的镜像,通常是在重新构建带有相同标签的新镜像时产生的。

列出悬空镜像:

docker images -f dangling=true 

删除所有悬空镜像:

docker image prune 

系统会提示确认,输入 y 即可。

3. 删除与正在运行的容器相关联的镜像

如果镜像正被容器使用,直接删除会报错。
例如运行一个 Nginx 容器:

docker run -d --name docker-nginx -p 8080:80 nginx 

此时尝试删除 nginx 镜像会失败。解决办法是先停止并删除容器:

docker stop <container_id>
docker rm <container_id>
docker rmi <nginx_image_id>

4. 删除所有镜像

如果要一键清理系统中的所有镜像,可以执行:

docker rmi $(docker images -a -q) 

总结

  • 删除前要确认容器和依赖关系,避免误删导致业务中断。
  • 删除顺序通常是 先容器,再镜像
  • 善用 docker image prunedocker system prune,能快速清理悬空镜像和无用资源。

通过合理清理,既能节省磁盘空间,又能让 Docker 环境保持干净高效。

以上就是Docker中删除镜像与容器的完整指南的详细内容,更多关于Docker删除镜像与容器的资料请关注脚本之家其它相关文章!

相关文章

  • docker-compose java.net.UnknownHostException问题

    docker-compose java.net.UnknownHostException问题

    这篇文章主要介绍了docker-compose java.net.UnknownHostException问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Docker基础知识之Linux namespace图文详解

    Docker基础知识之Linux namespace图文详解

    这篇文章主要给大家介绍了关于Docker基础知识之Linux namespace的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • Docker镜像远程(离线)迁移实践

    Docker镜像远程(离线)迁移实践

    本文介绍了如何将本地服务器的指定镜像打包为tar格式的文件并通过scp命令将其传输到另一台服务器,scp命令依赖于ssh协议,具有加密传输、跨主机通用和易用性等特点,通过编写bash脚本,可以简化传输过程,并且可以避免每次传输时手动输入远程服务器密码
    2026-03-03
  • Docker与docker-compose中volume参数的使用方式

    Docker与docker-compose中volume参数的使用方式

    文章介绍了Docker中的数据卷Volume的概念及其在宿主机和容器之间的数据共享和持久化,它详细说明了两种数据挂载方式:通过宿主机绝对路径挂载和通过卷标映射挂载,包括匿名挂载和具名挂载,同时,文章还展示了如何通过docker命令查看数据卷的宿主机目录
    2024-11-11
  • Docker部署的gitlab升级的详细步骤(升级到17.6.1版本)

    Docker部署的gitlab升级的详细步骤(升级到17.6.1版本)

    本文详细介绍了如何从GitLab 17.1.2版本升级到17.6.1版本,包括备份数据、确定升级路线、分步骤升级以及最终验证新版本的步骤,需要的朋友可以参考下
    2025-02-02
  • 解决执行docker daemon命令时出错的问题

    解决执行docker daemon命令时出错的问题

    daemon 这是docker 操作中十分常用的命令指定项,最近在运行docker daemon命令却发生了错误,后来通过测试各种方法终于解决了,现在将方法分享给大家,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-11-11
  • docker-compose部署配置jenkins的详细教程

    docker-compose部署配置jenkins的详细教程

    这篇文章主要介绍了docker-compose部署配置jenkins的详细教程,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Docker部署Kafka以及Spring Kafka实现

    Docker部署Kafka以及Spring Kafka实现

    这篇文章主要介绍了Docker部署Kafka以及Spring Kafka实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Docker在Windows上安装和使用教程(加速容器应用开发)

    Docker在Windows上安装和使用教程(加速容器应用开发)

    Docker依赖Linux内核,需部署于Linux系统或虚拟环境,安装需确认架构、下载安装包、重启验证,操作流程简洁高效,本文给大家介绍Docker在Windows上安装和使用教程,感兴趣的朋友跟随小编一起看看吧
    2025-09-09
  • Docker容器如何访问宿主机的Mysql数据库

    Docker容器如何访问宿主机的Mysql数据库

    使用Docker能实现服务的容器化,并使用容器间网络在它们之间进行通信,下面这篇文章主要给大家介绍了关于Docker容器如何访问宿主机的Mysql数据库,需要的朋友可以参考下
    2024-04-04

最新评论