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

如何基于dind镜像编写Dockerfile安装Jenkins,解决密钥文件不存在报错

报错修复方案

根因分析

你当前使用的基础镜像docker:20.10.11-dind-alpine3.14属于Alpine Linux发行版,而你照搬的是Debian/Ubuntu系的Jenkins安装逻辑,二者完全不兼容,触发报错的具体原因有三个:

  • Alpine Linux使用apk作为包管理器,没有内置apt命令,也不存在/usr/share/keyrings、/etc/apt/sources.list.d这类Debian系专属的系统路径
  • 你编写的RUN命令存在语法错误,tee命令的输出目标被拆分到了独立行,导致Shell直接把路径当作可执行文件运行,直接触发文件不存在的报错
  • Jenkins运行依赖Java环境,你原有命令中没有安装对应依赖,就算路径问题解决也无法正常安装运行

修复方案

方案一(推荐):换用Debian系dind基础镜像,适配官方安装逻辑

Debian系环境是Jenkins官方推荐的运行环境,兼容性更好,修正后的Dockerfile如下:

# 换用Debian版本的dind基础镜像
FROM docker:20.10.11-dind
USER root
RUN apt-get update && apt-get install -y curl gnupg2 &&\
    # 导入Jenkins官方GPG密钥
    curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | gpg --dearmor -o /usr/share/keyrings/jenkins-keyring.asc &&\
    # 配置Jenkins软件源
    echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/" > /etc/apt/sources.list.d/jenkins.list &&\
    # 安装Java依赖、Jenkins、nodejs、npm
    apt-get update &&\
    apt-get install -y openjdk-11-jdk jenkins nodejs npm &&\
    # 清理安装缓存减小镜像体积
    apt-get clean && rm -rf /var/lib/apt/lists/*

方案二:保留Alpine系dind基础镜像的修复方式

如果需要继续使用Alpine镜像,建议直接通过官方Jenkins war包安装,避免适配包源的兼容性问题,修正后的Dockerfile如下:

FROM docker:20.10.11-dind-alpine3.14
USER root
RUN apk update && apk upgrade &&\
    # 安装Java运行环境、curl、nodejs、npm
    apk add --no-cache openjdk11-jre curl nodejs npm &&\
    # 下载最新稳定版Jenkins war包
    curl -fsSL https://get.jenkins.io/war-stable/latest/jenkins.war -o /opt/jenkins.war &&\
    # 配置Jenkins运行用户与工作目录
    adduser -D jenkins && mkdir -p /var/jenkins_home && chown -R jenkins:jenkins /var/jenkins_home /opt/jenkins.war

# 配置运行参数
USER jenkins
ENV JENKINS_HOME=/var/jenkins_home
EXPOSE 8080 50000
ENTRYPOINT ["java", "-jar", "/opt/jenkins.war"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:06:04