【问题标题】:Jenkins build how to get docker imagesJenkins构建如何获取docker镜像
【发布时间】:2021-06-28 13:08:01
【问题描述】:

我有一个带有单个托管节点组的 EKS 集群设置,它包含两个(worker ec2 VM)。我在 k8s 集群中部署了 Jenkins,它已经启动并运行,没有任何问题。

注意:在 Jenkins - 配置系统 - 云 - k8 规范 - Kubernetes URL - 我将我的主地址放置在我的 EKS 集群运行的地方 Kubernetes 控制平面在 https://eksendpoint.eu-central-1.eks.amazonaws.com 运行,并且连接测试也成功。

接下来,当我运行 Jenkins 构建创建 Jenkins 构建 pod 并且构建完成后,Jenkins 构建 pod 也会自动终止。

注意:在 Jenkins 中,我只有单节点主节点,没有辅助节点。当 jenkins 文件使用下面的代码创建 Docker 映像并且图像成功标记为基于我的代码时。

现在的问题是在构建 Docker 映像之后,我应该在哪里获取 Docker 映像以部署到我的 k8s 环境中。注意:我没有使用任何 Docker 注册表容器来上传我的 Docker 镜像,在这种情况下我如何获取我的 Docker 镜像。

 stage('Build Docker Image') {
      container('docker') {
        echo 'docker'
        sh "docker build --network=host -t myimage:mytag ."
        sh 'pwd'
        sh 'ls -lrt'
        sh 'docker images'
        sh 'hostname'
      }
    }

Jenkins 日志输出

[Pipeline] sh
+ docker images
+ grep devops
myimage/mytag                  build-12345      8b1c58dcc39d   3 seconds ago       583MB

[Pipeline] sh
+ hostname
worker23cc8b1c0-c6b0-415b-b0e9-f23186ca39e8-xsm58-z7wmk

【问题讨论】:

  • 您必须标记您的图像并将其推送到您的 EKS 集群可以访问的 docker 注册表(例如 Amazon ECR)。然后,您必须在您的 k8s 集群中将凭证注册到您的 ECR。 Jenkins 在其“本地”注册表中构建映像,因此您的 EKS 集群可能不知道该注册表。

标签: docker jenkins kubernetes


【解决方案1】:

kubernetes 资源指定要在 pod 内运行的容器映像,期望该映像在容器映像注册表中可用。无法使用映像注册表中不可用的映像创建 pod。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-16
    • 2018-06-19
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 2020-06-02
    相关资源
    最近更新 更多