【问题标题】:Unable to generate Docker image using JKube plugin when executing k8s:build执行 k8s:build 时无法使用 JKube 插件生成 Docker 镜像
【发布时间】:2023-03-20 18:16:01
【问题描述】:

我正在使用 Jkube maven 插件通过 Jenkins 管道在 Ubuntu 下的 AWS EC2 实例上生成 Docker 映像。
当管道执行mvn clean install k8s:build 时出现此错误:

[ERROR] Failed to execute goal org.eclipse.jkube:kubernetes-maven-plugin:1.3.0:build (default-cli) on project social-carpooling-frontend: Execution default-cli of goal org.eclipse.jkube:kubernetes-maven-plugin:1.3.0:build failed: No <dockerHost> given, no DOCKER_HOST environment variable, no read/writable '/var/run/docker.sock' or '//./pipe/docker_engine' and no external provider like Docker machine configured -> [Help 1]

这是 Jenkins 管道:

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'
      }
    }
  }
}

当我使用 ssh 登录到这台机器并执行 docker -v 时,它显示 Docker version 20.10.0, build 7287ab3

所以 Docker 真的安装好了,守护进程也启动了,但是当我通过 maven 触发它时,似乎找不到它! 有什么想法吗?

【问题讨论】:

    标签: docker maven docker-maven-plugin jkube


    【解决方案1】:

    问题是由于运行 maven 命令的用户无权访问 docker.sock

    解决办法是这样修改docker.sock的读/写权限:

    sudo chmod 776 /var/run/docker.sock
    

    【讨论】:

    • Bdw,你也可以使用 Eclipse JKube 和 JIB Build strategy mvn k8s:build -Djkube.build.strategy=jib。这在 CI 中非常方便,您不需要 docker 守护程序来构建+推送图像到某个注册表。
    • @RohanKumar 我认为实际上插件在使用 jib 策略时不支持 Dockerfile 模式,因为我收到此错误:Failed to execute the build: Error when building JIB image: Dockerfile mode is not supported with JIB build strategy
    • 哦,对不起。 Dockerfile 模式不适用于 JIB。它仅适用于零配置或 XML 图像配置
    • 没问题,我切换到 XML 图像配置模式,没问题,但是我在 XML 模式下找不到 COPY cmd 的等效项!
    • 我们有 assembly mechanism,它会生成一条 COPY 指令。您可以在此blogpost 中找到示例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-26
    相关资源
    最近更新 更多