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

容器化Jenkins执行Pipeline报docker: not found且配置不持久化如何解决

问题1:Pipeline执行报错docker: not found

该错误核心原因是执行sh 'docker --version'的运行环境中没有安装docker客户端,和Jenkins插件、dind配置无关,根据你的使用场景选择对应解决方式:

场景1:继续使用agent { dockerfile true }动态构建的agent容器执行步骤

  • 在项目根目录用于构建agent的Dockerfile中,增加docker客户端安装逻辑,以Debian/Ubuntu基础镜像为例:
RUN apt-get update && apt-get install -y --no-install-recommends docker.io && rm -rf /var/lib/apt/lists/*
  • 如果需要agent内部的docker可以连接到dind服务,需要在Pipeline中给agent传递挂载和环境变量,修改后的Jenkinsfile参考:
pipeline {
    agent { 
        dockerfile {
            filename 'Dockerfile'
            args '-v jenkins-docker-certs:/certs/client:ro -e DOCKER_HOST=tcp://docker:2376 -e DOCKER_CERT_PATH=/certs/client -e DOCKER_TLS_VERIFY=1'
        }
    }
    stages {
        stage('Test') {
            steps {
                sh 'docker --version '
            }
        }
    }
}

场景2:直接在Jenkins主节点执行步骤

修改Jenkinsfile的agent配置为agent any,同时给Jenkins主容器安装docker客户端:

  • 方案一:基于官方jenkins/jenkins:lts镜像构建自定义镜像,增加docker客户端安装步骤,替换docker-compose中的镜像地址即可
  • 方案二:临时测试可直接进入Jenkins容器执行安装命令:apt update && apt install -y docker.io

关于dind启动时的could not change group /var/run/docker.sock to docker: group docker not found警告,属于dind容器内部的常规提示,和宿主机用户组无关,不影响正常使用,可直接忽略。

问题2:Jenkins配置重启后丢失

该问题核心原因是Jenkins运行用户没有/var/jenkins_home目录的写入权限,配置无法写入持久化卷,对应解决方法:

  • 执行以下命令修改jenkins-data卷的目录权限,官方Jenkins镜像默认运行用户UID为1000:
sudo chown -R 1000:1000 /var/lib/docker/volumes/$(docker volume ls -q | grep jenkins-data)/_data
  • 临时测试可在docker-compose的jenkins服务配置下增加user: root参数,强制用root用户运行Jenkins即可解决权限问题(生产环境不推荐)
  • 注意执行docker-compose down时不要加-v参数,否则会直接删除挂载的持久化卷,导致所有数据丢失。

内容的提问来源于stack exchange,提问作者andreas.teich

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:48:05