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

Docker RUN步骤设置动态变量并复用的方法及构建报错排查

在Docker RUN步骤中设置变量并自动识别Ubuntu版本的解决方案

问题分析

你遇到的exit code 100报错,本质是基础Ubuntu镜像默认未安装lsb-release包,导致lsb_release命令执行失败,中断了整个RUN步骤。

修复现有命令的方法

如果坚持用lsb_release,需要先安装依赖包,同时确保命令用&&串联(避免前序步骤失败后继续执行):

RUN apt-get update && apt-get install -y --no-install-recommends lsb-release \
    && test=$(lsb_release --release | awk '{print $2}') \
    && touch /tmp/test.file && echo "$test" >> /tmp/test.file

加--no-install-recommends可以减少不必要的依赖,缩小镜像体积。

更优方案:直接读取系统文件获取版本

Ubuntu系统的版本信息默认存放在/etc/os-release中,无需额外安装任何包,更高效轻量:

RUN UBUNTU_VERSION=$(grep VERSION_ID /etc/os-release | cut -d'"' -f2) \
    && touch /tmp/test.file && echo "$UBUNTU_VERSION" >> /tmp/test.file

这条命令直接从系统文件中提取版本号(比如20.04、22.04),完全避免了安装依赖的步骤。

实际需求落地:根据版本下载对应软件包

结合你的需求,可直接用提取的版本变量拼接下载链接,示例如下:

RUN UBUNTU_VERSION=$(grep VERSION_ID /etc/os-release | cut -d'"' -f2) \
    && apt-get update && apt-get install -y wget \
    && wget "https://example.com/your-package_${UBUNTU_VERSION}_amd64.deb" \
    && dpkg -i your-package_${UBUNTU_VERSION}_amd64.deb \
    && apt-get clean && rm -rf /var/lib/apt/lists/* your-package_${UBUNTU_VERSION}_amd64.deb

最后清理apt缓存和下载的deb包,进一步减小镜像体积。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 20:12:49