如何清理Docker系统且不删除指定镜像?
清理Docker并保留指定镜像的简便方法
可以通过以下几种单命令方式实现,无需额外启动容器:
1. 使用--filter参数精准过滤要保留的镜像
docker system prune -a支持通过--filter参数设置保留规则,常见用法:
保留特定名称/标签的镜像:
比如要保留nginx:latest和mysql:8.0,可以组合过滤条件:docker system prune -a --filter "name=nginx:latest" --filter "name=mysql:8.0" --filter "until=0h"注:
until=0h表示不删除任何时间内创建的匹配镜像,确保指定镜像被完整保留。保留最近N天创建的镜像:
如果只想保留最近30天内使用过的镜像,同时清理更早的无用资源:docker system prune -a --filter "until=720h"这里的
720h对应30天,可根据自身需求调整小时数。
2. 给需保留的镜像打标签,按标签过滤清理
先给要保留的镜像添加自定义标签(比如keep):
docker tag nginx:latest nginx:keep
之后执行清理命令,排除带有keep标签的镜像:
docker system prune -a --filter "label!=keep"
如果后续不需要保留该镜像了,直接删除标签即可,不会影响原镜像的正常使用。
3. 排除指定镜像ID进行清理
如果知道要保留的镜像ID,可以直接在命令中排除:
docker system prune -a --filter "id!=abc123" --filter "id!=def456"
如果需要批量处理,也可以把要保留的ID存成变量,写成单行命令:
KEEP_IDS=$(docker images -q nginx:latest mysql:8.0) && docker system prune -a --filter "id!=${KEEP_IDS//$'\n'/\" --filter \"id!=}"
这个命令会自动获取指定镜像的ID,然后排除它们完成清理操作。
内容的提问来源于stack exchange,提问作者Nikola Novak
相关产品推荐
相关产品推荐

