docker清理无用镜像的方法详解
作者:done58
清除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清理镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!