gpt4 book ai didi

jenkins - GKE : Multi-stage dockerfiles inside Jenkins

转载 作者:行者123 更新时间:2023-12-02 15:15:39 25 4
gpt4 key购买 nike

如何在我的 Jenkins 执行器中运行 17.05+ docker?

我已按照教程进行操作:

一切都按照教程中的描述进行。

我有一个(工作的)多阶段 Dockerfile,我正在尝试在 Jenkins 中构建它,但它需要最新的 Docker 版本 (> 17.05)。

我找不到更新此内容的方法...

在我的管道中,如果我运行 docker version ,无论我做什么,我总是得到 1.13.1:

docker version
Client:
Version: 1.13.1
API version: 1.26
Go version: go1.8.1
Git commit: 092cba3
Built: Wed Aug 30 20:31:05 2017
OS/Arch: linux/amd64

Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Go version: go1.8.1
Git commit: 092cba3
Built: Wed Aug 30 20:31:05 2017
OS/Arch: linux/amd64
Experimental: false

在我应该用作奴隶的容器中,带有 docker run -it 'image-name' bash :

docker version
Client:
Version: 17.11.0-ce
API version: 1.34
Go version: go1.8.3
Git commit: 1caf76c
Built: Mon Nov 20 18:36:37 2017
OS/Arch: linux/amd64
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

关于 Jenkins > Configure Jenkins我设置了 0 个执行程序,仅使用我新推送的镜像设置了 1 个容器模板(我已检查过,它是最新的),选中了“始终拉取镜像”复选框...

当我将标签设置为我的Kubernetes Pod Template时(例如 docker-edge )并尝试使用标签限制执行器:

  • node('docker-edge')在我的 Jenkinsfile 中没有改变任何东西
  • 在我的作业配置中,设置 Pipeline Model Definition > Docker Label to docker-edge` 使其停止并且找不到任何执行器

最佳答案

对于阅读本文的任何人,我们在 GKE 之上使用多阶段构建,具体如下:

  1. 我们使用 docker:dind 部署一个 pod,并使用以下参数运行它:

    -dockerd

    ---storage-driver=overlay2

    - -H tcp://0.0.0.0:2375

  2. 我们将此 Pod 公开为服务 (dind-service)

  3. jenkins 中的每个新作业都会创建一个带有 jnlp 容器的新 pod(这是 k8s 之上 jenkins 的默认容器)+我们自己的自定义容器(base: FROM docker:18-dind)
  4. 我们使用 withEnv 在 Jenkins 作业中配置 DOCKER_HOST=tcp://dind-service:2375
  5. 当我们这样做时:docker build .在我们的作业中它使用dind pod的守护进程。
  6. 它为我们提供了出色的缓存和性能 + 允许我们在 gke 中使用多阶段构建:)

如果你在顶级 k8s 上使用 Jenkins,我真的建议你阅读(对更好地理解有很大帮助): https://akomljen.com/set-up-a-jenkins-ci-cd-pipeline-with-kubernetes

关于jenkins - GKE : Multi-stage dockerfiles inside Jenkins,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47536926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com