You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何清理AWS SAM构建产生的旧容器镜像,或配置SAM自动清理此类镜像?

如何清理AWS SAM构建产生的旧容器镜像,或配置SAM自动清理此类镜像?

太懂这种磁盘突然被占满的崩溃感了!我之前用SAM开发容器化Lambda的时候,也碰到过一模一样的问题——旧镜像堆得快把硬盘撑爆,手动删起来真的麻烦。下面分享几个实用的方法,不管是手动清理还是自动配置都有:

一、手动快速清理SAM相关镜像

1. 用SAM官方命令清理缓存

SAM CLI自带了专门清理本地缓存的命令,能一键清除旧的构建缓存、下载的运行时镜像,非常省心:

sam purge

这个命令会清理SAM存储在本地的所有缓存资源,包括那些重复的nodejs-16或者其他运行时镜像,比手动一个个删高效多了。

2. 精准清理Docker中的SAM镜像

如果你想更精准地只删除SAM相关的镜像,不想动其他Docker镜像,可以用Docker命令筛选后删除:

# 列出所有SAM相关的镜像并强制删除
docker images | grep "amazon/aws-sam-cli" | awk '{print $3}' | xargs docker rmi -f

这个命令会筛选出标签包含amazon/aws-sam-cli的镜像(SAM的运行时镜像都是这个前缀),然后批量删除它们。

3. 清理所有闲置Docker资源(进阶)

如果你的Docker里还有其他闲置的镜像、容器、卷,可以用Docker的系统修剪命令一次性清理,顺带把SAM的旧镜像也处理掉:

# 清理所有闲置的镜像、容器、网络、卷(不会删除正在使用的资源)
docker system prune -a

加上-a参数会删除所有未被使用的镜像,不仅仅是悬空镜像,能释放更多磁盘空间。

二、配置SAM自动清理,从根源解决问题

1. 构建时禁用缓存

每次构建的时候加上--no-cache参数,SAM就不会缓存运行时镜像,每次都会重新拉取最新版本(缺点是构建速度会变慢,适合对磁盘空间敏感的场景):

sam build --no-cache

2. 全局配置SAM自动清理

可以修改SAM的配置文件,让它每次构建后自动清理旧镜像。在你的用户目录下找到~/.samconfig.toml(如果没有就新建一个),添加以下配置:

[default.build.parameters]
docker_cleanup = true

这样之后每次执行sam build,SAM都会自动清理不再需要的构建镜像,不用手动操作了。

3. 定时自动清理Docker资源

如果想更彻底,还可以用系统定时任务(比如Linux的cron,Windows的任务计划)定期运行Docker的修剪命令,比如每天凌晨清理一次24小时前的闲置镜像:

# 示例:每天凌晨2点清理24小时前的闲置镜像(Linux cron配置)
0 2 * * * docker system prune -a --filter "until=24h" -f

这个方法不仅能处理SAM的镜像,还能维护整个Docker环境的磁盘占用。


备注:内容来源于stack exchange,提问作者DavGin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 14:23:10