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

Jenkins构建的Docker镜像无名称和标签问题原因咨询

Jenkins构建Docker镜像无名称标签问题排查

基础信息

构建使用的Dockerfile内容

FROM golang:1.17.5 as builder

WORKDIR /go/src/github.com/cnosdb/cnosdb

COPY . /go/src/github.com/cnosdb/cnosdb

RUN go env -w GOPROXY=https://goproxy.cn,direct
RUN go env -w GO111MODULE=on
RUN go install ./...

FROM debian:stretch
COPY --from=builder /go/bin/cnosdb /go/bin/cnosdb-cli /usr/bin/
COPY --from=builder /go/src/github.com/cnosdb/cnosdb/etc/cnosdb.sample.toml /etc/cnosdb/cnosdb.conf

EXPOSE 8086
VOLUME /var/lib/cnosdb

COPY docker/entrypoint.sh /entrypoint.sh
COPY docker/init-cnosdb.sh /init-cnosdb.sh
RUN chmod +x /entrypoint.sh /init-cnosdb.sh
ENTRYPOINT ["/entrypoint.sh"]
CMD ["cnosdb"]

相关截图

  • Jenkins配置截图:Jenkins配置截图
  • 构建后镜像异常现象截图:镜像无名称标签截图

问题根本原因

该问题和Dockerfile写法无关,上述多阶段构建的Dockerfile语法完全正常,问题出在构建逻辑的配置上:

  • Docker构建镜像时,必须通过-t/--tag参数明确指定镜像名称和标签,才会给生成的镜像打标;如果构建时未指定该参数,最终只会生成一个仅带IMAGE ID的悬空镜像,展示为<none>:<none>,也就是观察到的无名称无标签现象。
  • 结合Jenkins配置场景判断,要么是Shell构建步骤里写的docker build命令没加-t参数,要么是使用Docker构建插件时,没有填写镜像仓库名称、镜像标签的配置项,导致插件执行构建时没有自动追加打标参数。

修复方法

  • 若使用Shell命令执行构建:修改构建命令,明确指定名称和标签,可直接复用Jenkins内置环境变量做版本标识,示例:
    # 用构建号作为标签,方便后续版本追溯
    docker build -t cnosdb:${BUILD_NUMBER} .
    
  • 若使用Jenkins Docker插件构建:在对应构建步骤的配置页,填写镜像仓库/镜像名称,在标签栏填入自定义标签(支持使用Jenkins环境变量,比如${BUILD_NUMBER}、latest等),保存后重新执行构建即可生成带正确名称标签的镜像。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:27:25