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

Debian系列Podman/Docker镜像使用ARG时sha256sum --check执行异常问题

问题根因

Docker/Podman 中的 ARG 存在作用域限制:在 FROM 语句之前定义的全局 ARG 仅对所有 FROM 语句本身生效,进入对应镜像的构建阶段后,这些全局 ARG 会自动失效,无法直接在后续的 RUN、COPY 等指令中插值使用。

你之前的写法中,NEOVIM_VERSION、NEOVIM_SHA256 都属于全局 ARG,进入 Debian 镜像构建阶段后变量值为空,echo 输出的内容不满足 sha256sum 要求的「哈希值+两个空格+文件名」格式,因此抛出校验格式错误。Ubuntu 镜像场景能正常运行,是因为你之前编写的 Ubuntu 镜像 Containerfile 中,在 FROM 之后重新声明过对应的 ARG 变量。

修复方案

在 FROM 语句之后、使用变量的 RUN 语句之前,重新声明需要用到的 ARG 即可,不需要重复赋值,会自动继承全局 ARG 的默认值,也支持构建时通过 --build-arg 覆盖。

修复后完整 Containerfile 示例:

# 全局ARG,仅作用于FROM行
ARG DEB_RELEASE=bullseye
ARG AZ_FUNC_VERSION=4
ARG NEOVIM_VERSION=v0.5.1
ARG NEOVIM_SHA256=1cfbc587ea5598545ac045ee776965a005b1f0c26d5daf5479b859b092697439

FROM docker.io/library/debian:${DEB_RELEASE}

# 重新声明需要在当前构建阶段使用的ARG,继承全局值
ARG NEOVIM_VERSION
ARG NEOVIM_SHA256

RUN curl --location --remote-name --url "https://github.com/neovim/neovim/releases/download/${NEOVIM_VERSION}/nvim.appimage" && \
    echo "${NEOVIM_SHA256}  nvim.appimage" | sha256sum --check --

如果存在多构建阶段,每个阶段需要用到 ARG 都需要在对应阶段内单独重新声明。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:45:07