【问题标题】:kubernetes jenkins docker command not found找不到 kubernetes jenkins docker 命令
【发布时间】:2019-04-14 10:20:52
【问题描述】:

使用 helm 安装 Jenkins

helm install --name jenkins -f values.yaml stable/jenkins

已安装 Jenkins 插件

- kubernetes:1.12.6
- workflow-job:2.31
- workflow-aggregator:2.5
- credentials-binding:1.16
- git:3.9.3
- docker:1.1.6

定义 Jenkins 管道来构建 docker 容器

node {
    checkout scm

    def customImage = docker.build("my-image:${env.BUILD_ID}")

    customImage.inside {
        sh 'make test'
    }
}

抛出错误:找不到docker

【问题讨论】:

    标签: docker jenkins kubernetes


    【解决方案1】:

    您可以使用管道中的所需工具(docker、Maven、Helm 等)定义代理 pod:

    首先,使用以下值创建 agentpod.yaml:

    apiVersion: v1
    
    kind: Pod
    
    metadata:
    
      labels:
    
        some-label: pod
    
    spec:
    
      containers:
    
        - name: maven
    
          image: maven:3.3.9-jdk-8-alpine
    
          command:
    
            - cat
    
          tty: true
    
          volumeMounts:
    
            - name: m2
    
              mountPath: /root/.m2
    
        - name: docker
    
          image: docker:19.03
    
          command:
    
            - cat
    
          tty: true
    
          privileged: true
    
          volumeMounts:
    
            - name: dockersock
    
              mountPath: /var/run/docker.sock
    
      volumes:
    
        - name: dockersock
    
          hostPath:
    
            path: /var/run/docker.sock
    
        - name: m2
    
          hostPath:
    
            path: /root/.m2
    

    然后将管道配置为:

    pipeline {
        agent {
            kubernetes {
                defaultContainer 'jnlp'
                yamlFile 'agentpod.yaml'
            }
        }
        stages {
            stage('Build') {
                steps {
                    container('maven') {
                        sh 'mvn package'
                    }
                }
            }
            stage('Docker Build') {
                steps {
                    container('docker') {
                        sh "docker build -t dockerimage ."
                    }
                }
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      您似乎只安装了插件但没有安装软件包。两种可能。

      1. 配置插件以使用 Jenkins 安装软件包。

        • 转到管理 Jenkins
        • 全局工具配置
        • Docker -> 填写名称(例如:Docker-latest)
        • 自动检查安装,然后添加安装程序(从 here).

        • 然后保存

      2. 如果您已在您的计算机上安装,则使用 Docker 的位置更新 Jenkins 中的 PATH 变量。

      【讨论】:

      • 您还有问题吗?如果是,您能否提供您的 values.yaml 文件?由于 Jenkins 在 pod kubernetes(容器)中运行,并且您正在尝试创建 docker 映像,我们通常通过安装 docker.sock 文件(如 -> /var/run/docker.sock:/var/run/docker)在主机上执行此操作。短袜。但仍然需要在 Jenkins 容器上安装 Docker 客户端。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-09
      • 2020-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 2021-02-02
      相关资源
      最近更新 更多