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

Docker多阶段构建仅生成一个镜像?如何获取多个镜像?

问题解答

为什么只看到一个镜像?

你执行docker image build -t app:latest ./时,-t参数只会给Dockerfile里最后一个阶段的镜像打上标签。前面的build阶段属于构建过程的中间镜像,默认没有仓库名和标签(会显示为<none>:<none>),如果你的docker image ls -a没显示这类镜像,要么是Docker自动清理了未被引用的中间镜像,要么是你没注意到列表里的<none>条目。

多阶段构建的设计初衷就是用前面的阶段做构建环境,最终只保留轻量的运行镜像,所以默认不会给中间阶段打标签。

能不能获取两个镜像?

当然可以,两种方法:

  • 方法一:构建时指定目标阶段打标签
    先单独构建并标记build阶段的镜像:

    docker image build -t app-build:latest --target build ./
    

    之后再构建最终的运行镜像:

    docker image build -t app:latest ./
    

    这样docker image ls -a就能看到两个带标签的镜像。

  • 方法二:给已存在的中间镜像打标签
    重新构建时查看详细过程,找到build阶段的镜像ID:

    docker image build --no-cache --progress=plain ./
    

    在输出里找到类似---> <IMAGE_ID>的行(对应build阶段完成后的镜像),然后给它打标签:

    docker tag <IMAGE_ID> app-build:latest
    

为什么别人能得到三个镜像?

你看到的Stack Overflow案例里出现三个镜像,大概率是因为:

  • 对方的Dockerfile有三个构建阶段;
  • 或者列表里包含了基础镜像(比如alpine:3.18.4)加上两个阶段的镜像,总共三个条目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 12:25:05