You need to enable JavaScript to run this app. 使用JKube插件执行k8s:build无法生成Docker镜像问题求助
优惠活动
大模型
产品
解决方案
定价
更多

使用JKube插件执行k8s:build无法生成Docker镜像问题求助

问题根因

报错核心是Eclipse JKube插件无法获取到可用的Docker服务连接入口。你通过SSH登录EC2能正常执行Docker命令,仅说明你登录的用户环境满足Docker访问要求,不代表Jenkins执行流水线任务的上下文也满足条件,常见诱因有两类:

  • Jenkins进程的运行用户没有/var/run/docker.sock的读写权限
  • 流水线执行的Shell环境未配置DOCKER_HOST环境变量,插件无法自动识别Docker服务地址
解决方案

你可以按优先级选择以下任意一种方案修复:

方案1:给Jenkins运行用户赋Docker访问权限(推荐,长期生效)

  • 执行命令确认Jenkins的运行用户:ps aux | grep jenkins | grep -v grep | awk '{print $1}',默认一般为jenkins,Bitnami镜像版本的运行用户通常为bitnami
  • 将运行用户加入docker用户组,示例(用户为jenkins时):sudo usermod -aG docker jenkins
  • 重启Jenkins服务让权限生效:sudo systemctl restart jenkins
  • 验证配置:切换到Jenkins运行用户执行docker ps,无权限报错即为配置成功

方案2:在Maven命令中显式指定Docker连接地址(无需改系统配置,临时生效)

直接修改流水线中的Maven执行命令,添加-Ddocker.host参数指定Docker套接字地址,修改后配置如下:

pipeline {
  agent any
  stages {
    stage('Docker Check Stage') {
      steps {
        sh '/home/bitnami/downloads/apache-maven-3.8.1/bin/mvn clean install k8s:build -Premote -Ddocker.host=unix:///var/run/docker.sock'
      }
    }
  }
}

方案3:在流水线中全局声明DOCKER_HOST环境变量

在Jenkins流水线的environment段配置Docker地址,所有后续步骤都能自动识别,配置如下:

pipeline {
  agent any
  environment {
    DOCKER_HOST = 'unix:///var/run/docker.sock'
  }
  stages {
    stage('Docker Check Stage') {
      steps {
        sh '/home/bitnami/downloads/apache-maven-3.8.1/bin/mvn clean install k8s:build -Premote'
      }
    }
  }
}
异常排查

如果以上方案执行后仍报错,执行命令检查Docker套接字的权限配置:ls -l /var/run/docker.sock
正常返回的权限应为 srw-rw---- 1 root docker ...,如果权限不符,执行以下命令修复:

sudo chmod 660 /var/run/docker.sock
sudo chown root:docker /var/run/docker.sock

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 04:45:05