docker清理无用镜像的方法详解

 更新时间:2025年06月22日 11:55:57   作者:done58  
k8s环境运行久了,镜像会一直在电脑上,会出现磁盘空间不足,需要定期清理过期没有使用的镜像,下面小编就来和大家详细讲讲docker如何清理无用镜像吧

清除docker无用镜像

查看 docker 占用的资源

在进行资源清理之前我们有必要搞清楚 docker 都占用了哪些系统的资源。这需要综合使用不同的命令来完成。

  • docker container ls:默认只列出正在运行的容器,-a 选项会列出包括停止的所有容器。
  • docker image ls:列出镜像信息,-a 选项会列出 intermediate 镜像(就是其它镜像依赖的层)。
  • docker volume ls:列出数据卷。
  • docker network ls:列出 network。
  • docker info:显示系统级别的信息,比如容器和镜像的数量等。

通过这些命令查看 docker 使用的资源情况后,相信你已经决定要清理 docker 占用的一些资源了!让我们先从那些未被使用的资源开始。

查看镜像

按名称排序

docker images | sort -k7 -h

docker images |grep none  会发现有好多无用镜像

只删除那些未被使用的资源

Docker 提供了方便的 docker system prune 命令来删除那些已停止的容器、dangling 镜像、未被容器引用的 network 和构建过程中的 cache:

$ docker system prune

使用以下命令清理已经停止运行的docker容器 

docker rm $(docker ps --all -q -f status=exited)

1、通过标签删除镜像

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

docker rmi [image]

或者:

docker image rm  [image]

支持的子命令如下:

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

2、通过 ID 删除镜像

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

docker rmi ID

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

3、删除镜像的限制

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

再删除这个镜像;

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

docker rm  ID

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

docker rmi ID

4、清理镜像

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

docker image prune

它支持的子命令有:

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

方法补充

docker 清理未使用的镜像的命令

在 Docker 中清理未使用的镜像(包括悬空镜像和完全未被引用的镜像),可以使用以下命令:

1. ​删除所有悬空镜像​(推荐常用)

docker image prune

​悬空镜像 (dangling images)​​ 是指没有标签且未被任何容器引用的镜像(通常是构建过程中的临时层)。

添加 -f 强制删除(无需确认):

docker image prune -f

2. ​删除所有未被使用的镜像​(谨慎!)

docker image prune -a

​**-a 会删除所有未被容器或标签引用的镜像**​(包括有名字但未被使用的镜像)。

添加 -f 强制删除:

docker image prune -a -f

3. ​清理整个 Docker 系统​(停止的容器 + 悬空镜像 + 网络 + 构建缓存等)

docker system prune

添加 -a 会额外删除未被使用的镜像​(不仅仅是悬空镜像):

docker system prune -a

强制清理(跳过确认提示):

docker system prune -a -f

注意事项:

​悬空镜像 vs 未使用镜像​:

  • docker image prune → 只删除悬空镜像​(无名镜像)。
  • docker image prune -a → 删除所有未被引用的镜像​(包括有名字但未被容器使用的镜像)。

​数据无价!​​

执行 prune -a 前确保镜像真的不需要(例如,未来启动容器可能会用到的镜像也会被删除)。

建议先手动检查:

# 列出悬空镜像
docker images -f dangling=true

# 列出所有镜像(按占用空间排序)
docker images --format "{{.ID}}\t{{.Repository}}\t{{.Size}}" | sort -k 3 -h

​自动清理​:

可通过配置 Docker Daemon 的 docker-compose.yml 或修改 /etc/docker/daemon.json 实现定时清理,例如:

{
  "features": {
    "buildkit": true
  },
  "builder": {
    "gc": {
      "enabled": true,
      "defaultKeepStorage": "10GB"
    }
  }
}

总结常用命令:

场景命令
​安全清理悬空镜像​docker image prune -f
​彻底清理未使用的镜像​docker image prune -a -f(谨慎!)
​全面清理 Docker 系统垃圾​docker system prune -f(不包含未使用镜像)

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

相关文章

  • Docker如何更换镜像源提高拉取速度

    Docker如何更换镜像源提高拉取速度

    在国内,由于网络政策和限制,直接访问DockerHub速度很慢,尤其是在拉取大型镜像时,为了解决这个问题,常用的方法就是更换镜像源,本文将详细介绍如何更换Docker镜像源,并提供当前可用的镜像源,感兴趣的朋友一起看看吧
    2025-04-04
  • Linux下Docker及portainer相关配置方法

    Linux下Docker及portainer相关配置方法

    本文以CentOS 7为例,安装docker CE版本,docker有两种版本,社区版本CE和企业版本EE,通过实例代码给大家介绍了Linux下Docker及portainer相关配置方法,感兴趣的朋友跟随小编一起看看吧
    2019-06-06
  • Docker 镜像构建保姆级入门示例教程

    Docker 镜像构建保姆级入门示例教程

    Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明,这篇文章主要介绍了Docker 镜像构建保姆级入门实战指南,需要的朋友可以参考下
    2022-09-09
  • docker守护进程的配置和操作的方法

    docker守护进程的配置和操作的方法

    这篇文章主要介绍了docker守护进程的配置和操作的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • docker创建镜像并上传云端服务器的实现示例

    docker创建镜像并上传云端服务器的实现示例

    镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,本文介绍了如何使用Docker创建镜像,并将其上传到云端,感兴趣的可以了解一下
    2023-08-08
  • docker-修改容器挂载目录的3种方法小结

    docker-修改容器挂载目录的3种方法小结

    这篇文章主要介绍了docker-修改容器挂载目录的3种方法小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Docker微服务的ETCD集群搭建教程详解

    Docker微服务的ETCD集群搭建教程详解

    这篇文章主要为大家介绍了关于Docker微服务的ETCD集群搭建教程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • 解决Docker镜像拉取超时及优化网络配置的方法(failed to do request: Head “https://registry-1.docker.io/v2/*)

    解决Docker镜像拉取超时及优化网络配置的方法(failed to do request

    在使用 Docker 构建和部署应用时,拉取镜像是一个关键的步骤,然而,在一些网络环境中,特别是企业内部网或受限网络环境中,可能会遇到 Docker 镜像拉取失败或超时的问题,这篇博客将详细探讨如何应对 Docker 镜像拉取超时的问题,需要的朋友可以参考下
    2024-11-11
  • Linux环境下使用Docker搭建Jenkins容器的方法步骤

    Linux环境下使用Docker搭建Jenkins容器的方法步骤

    本文主要介绍了Linux环境下使用Docker搭建Jenkins容器的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 解决docker数据文件过大导致根磁盘满的问题

    解决docker数据文件过大导致根磁盘满的问题

    本篇文章主要介绍了解决docker数据文件过大导致根磁盘满的问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-04-04

最新评论