Jenkins管道异常-找不到Docker

时间:2019-07-23 13:50:54

标签: docker jenkins jenkins-pipeline jnlp

我已经创建了GKE集群,并在该集群上安装了Jenkins。现在我正在运行管道,我创建了用于构建DockerImage的Jenkinsfile,但是当我运行管道时,它抛出了未找到Docker的异常

1)创建GKE集群 2)已安装的詹金斯 3)添加了Docker Hub凭据 4)为gitlab添加了访问密钥

Jenkinsfile:

stage('Build Docker Image'){             什么时候 {                 分支“主人”             }             脚步 {                 脚本{                     在docker run之前回显                     sh'docker --version'                     应用= docker.build(“ sarab321 / test-pipeline”)                     回显“ docker运行成功”                 }             }         }

请参见下面的异常

apiVersion:“ v1” 种类:“豆荚” 元数据:   注释:{}   标签:     詹金斯:“奴隶”     jenkins / cd-jenkins-slave:“真”   名称:“ default-d7qdb” 规格:   容器:   -参数:     -“ 59c323186186a77b4be015362977ec64e4838001b6d77c0f372bec7cda7cf93f9b2”     -“ default-d7qdb”     环境:     -名称:“ JENKINS_SECRET”       值:“ 59c323186a77b4be015362977ec64e4838001b6d77c0f372bec7cda7cf93f9b2”     -名称:“ JENKINS_TUNNEL”       值:“ cd-jenkins-agent:50000”     -名称:“ JENKINS_AGENT_NAME”       值:“ default-d7qdb”     -名称:“ JENKINS_NAME”       值:“ default-d7qdb”     -名称:“ JENKINS_URL”       值:“ http://cd-jenkins.default.svc.cluster.local:8080”     图片:“詹金斯/jnlp-slave:3.27-1”     imagePullPolicy:“ IfNotPresent”     名称:“ jnlp”     资源:       限制:         内存:“ 512Mi”         cpu:“ 1”       要求:         内存:“ 256Mi”         cpu:“ 500m”     securityContext:       特权:false     tty:假     volumeMounts:     -mountPath:“ / var / run / docker.sock”       名称:“ volume-0”       readOnly:否     -mountPath:“ / home / jenkins”       名称:“工作区体积”       readOnly:否     workingDir:“ / home / jenkins”   nodeSelector:{}   restartPolicy:“从不”   serviceAccount:“默认”   数量:   -hostPath:       路径:“ / var / run / docker.sock”     名称:“ volume-0”   -emptyDir:       媒介:“”     名称:“工作区体积”

  • docker版本 /home/jenkins/workspace/TestPipeline_master@tmp/durable-5dd73d2b/script.sh:1:/home/jenkins/workspace/TestPipeline_master@tmp/durable-5dd73d2b/script.sh:docker:未找到

1 个答案:

答案 0 :(得分:1)

使用{jenkins / jnlp-slave:3.27-1“映像,看起来好像docker尚未安装在构建代理中,该构建代理位于容器内。我有一些示例如何在以下网址的jenkins LTS映像中安装Docker CLI:https://github.com/sudo-bmitch/jenkins-docker

该图像包括以下使Docker集成可移植的步骤:

  • 安装Docker CLI
  • 安装gosu(需要此操作,因为入口点将以root身份启动)
  • 将jenkins用户配置为docker组的成员
  • 包括一个入口点,该入口点可调整为docker GID以匹配/var/run/docker.sock GID的入口点

实际的Docker CLI安装在以下几行中进行

RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - \
 && add-apt-repository \
     "deb [arch=amd64] https://download.docker.com/linux/debian \
     $(lsb_release -cs) \
     stable" \
 && apt-get update \
 && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
    docker-ce-cli${DOCKER_CLI_VERSION}

您可以获取entrypoint.sh和Dockerfile,修改Dockerfile的基础映像(FROM),以及entrypoint.sh内的原始入口点脚本,以指向jnlp-slave等效项。