为何基于public.ecr.aws/lambda/python:3.11构建的空项目镜像达749MB?
问题原因分析
你遇到的镜像大小差异,核心原因是官方页面显示的是压缩后的镜像体积,而docker images输出的是本地解压后的磁盘占用大小:
- AWS ECR gallery上标注的238MB是镜像在仓库中存储的压缩体积,这个是经过压缩后的大小,方便传输和存储。
- 当你拉取镜像到本地Docker环境后,Docker会将镜像的所有层解压,此时
docker images显示的是解压后的实际磁盘占用,这类镜像的压缩率通常在3:1左右,238MB压缩后的镜像解压后正好接近749MB的规模。
另外,你构建的镜像和基础镜像大小几乎一致——因为你只添加了一个几KB的lambda_function.py,这个文件对整体体积的影响可以忽略不计,本质上你看到的就是基础镜像解压后的真实大小。
验证方法
- 直接拉取基础镜像后查看大小:
docker pull public.ecr.aws/lambda/python:3.11 docker images public.ecr.aws/lambda/python:3.11
输出的Size应该和你构建的positions-backend镜像大小基本一致,证明不是你的Dockerfile或代码导致的体积膨胀。
- 查看镜像的详细信息,对比压缩与解压大小:
docker inspect public.ecr.aws/lambda/python:3.11
输出的Size字段是解压后的大小,你可以和ECR官方页面标注的压缩体积做对比,确认两者的差异逻辑。
内容的提问来源于stack exchange,提问作者Jhon Sanz
相关产品推荐
相关产品推荐

