我已经创建了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: 媒介:“” 名称:“工作区体积”
答案 0 :(得分:1)
使用{jenkins / jnlp-slave:3.27-1“映像,看起来好像docker
尚未安装在构建代理中,该构建代理位于容器内。我有一些示例如何在以下网址的jenkins LTS映像中安装Docker CLI:https://github.com/sudo-bmitch/jenkins-docker
该图像包括以下使Docker集成可移植的步骤:
实际的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等效项。