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

distroless多阶段构建Postgres镜像出现多镜像问题咨询

多阶段构建生成多个镜像的原因说明
  • 基础镜像拉取留存
    你本次构建用到了两个公共基础镜像:postgres:13-alpine、gcr.io/distroless/base-debian10,如果本地之前没有这两个镜像,构建过程中会自动拉取并持久化存储在本地,这两个会作为独立镜像展示在镜像列表中。
  • 中间构建阶段的缓存镜像留存
    多阶段构建的每个阶段执行完成后,该阶段的完整镜像默认会作为缓存留存到本地,方便后续重建时复用,你的第一阶段build构建完成后生成的镜像也会单独存在,这类镜像通常显示为REPOSITORY和TAG均为<none>的悬空镜像。
  • 最终构建产物镜像
    就是你预期生成的最终阶段镜像。

以上三类镜像加起来刚好为4个,符合你遇到的现象。

额外优化建议

你当前的Dockerfile存在运行逻辑问题:第一阶段仅声明了工作目录,没有将Postgres的可执行文件、依赖库、配置等必要文件拷贝到指定的工作目录,第二阶段拷贝的路径实际为空,最终执行CMD ["/postgres"]时会找不到可执行文件导致启动失败。如果要实现distroless版本的Postgres镜像,需要在第一阶段补充文件收集逻辑,将postgres运行所需的所有依赖都整理到待拷贝目录中。

临时清理方案

如果不需要保留中间缓存镜像,可以在构建完成后执行docker image prune -f清理所有悬空镜像,不会影响正常的基础镜像和最终产物镜像。


内容的提问来源于stack exchange,提问作者Luandre Ezra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:06:03