跳过正文
Background Image
  1. Posts/

如何使用 Jenkins Docker Cloud

·603 字·2 分钟· ·
沈显鹏
作者
沈显鹏
目录

最近我在进行 Jenkins 实例迁移,这次我选择使用 Jenkins Docker Cloud,而不是在 Jenkinsfile 中直接使用 docker { ... }

Jenkins Docker Cloud 插件
#

首先,你需要安装 Jenkins Docker Cloud 插件:
https://plugins.jenkins.io/docker-plugin/

Jenkins Docker Cloud 是一个允许 Jenkins 使用 Docker 容器作为构建节点的插件。

所以,你需要配置一个启用 Remote API 的 Docker 主机,如下所示。


启用 Docker Remote API
#

Jenkins Controller 通过 REST API 连接到 Docker 主机。
启用 Docker 主机的远程 API,请按照以下步骤操作:

Step 1:启动一个虚拟机并安装 Docker。你可以根据所使用的 Linux 发行版,参考官方文档进行安装。确保 Docker 服务已启动并正常运行。

Step 2:登录服务器,打开 Docker 服务文件 /lib/systemd/system/docker.service,找到 ExecStart 这一行,并替换为:

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock

Step 3:重新加载并重启 Docker 服务:

systemctl daemon-reload
service docker restart

Step 4:执行以下命令验证 API 是否可用(将 myhostname 替换为主机名或 IP 地址):

curl http://localhost:4243/version
curl http://myhostname:4243/version

创建自定义 Docker 镜像
#

我在使用自定义 Docker 镜像时,选择了 launch via JNLP

如果你的镜像基于 jenkins/inbound-agent,可以参考以下 Dockerfile:

FROM jenkins/inbound-agent
RUN apt-get update && apt-get install XXX
COPY your-favorite-tool-here

ENTRYPOINT ["/usr/local/bin/jenkins-agent"]

在 Jenkinsfile 中使用
#

当 Docker Cloud 配置完成后,你就可以在 Jenkinsfile 中像普通 agent 一样使用它,例如:

// Jenkinsfile (Declarative Pipeline)
pipeline {
    agent {
        node {
            "docker"
        }
    }
}

这种方式和直接使用 docker { ... } 是不同的。 例如直接在 Jenkinsfile 中使用 docker { ... }

// Jenkinsfile (Declarative Pipeline)
pipeline {
    agent {
        docker { image 'node:22.13.1-alpine3.21' }
    }
    stages {
        stage('Test') {
            steps {
                sh 'node --eval "console.log(process.platform,process.env.CI)"'
            }
        }
    }
}

更多关于在 Pipeline 中使用 Docker 的内容,请参考: https://www.jenkins.io/doc/book/pipeline/docker/


如有疑问,欢迎留言交流。


转载本文请注明作者与出处,禁止商业用途。欢迎关注公众号「DevOps攻城狮」。

相关文章

Docker Buildx Bake:加速构建和管理多平台镜像的利器
·1624 字·4 分钟
本文介绍 Docker Buildx Bake 的概念、优势、使用场景以及如何使用该功能来加速构建和管理多平台镜像。
在 Windows 做开发还能这么爽?WSL + VS Code + Docker Desktop 你值得有用
·1133 字·3 分钟
本文介绍了如何在 Windows 上使用 WSL、VS Code 和 Docker Desktop 进行开发,提供了安装和配置的详细步骤,以及使用这些工具的优势和体验。
关于 Docker,containerd,CRI,CRI-O,OCI,runc 的解释以及它们是如何工作在一起的
·2812 字·6 分钟
本文介绍了 Docker、containerd、CRI、CRI-O、OCI 和 runc 等容器生态系统中的关键组件和标准,解释它们之间的关系以及如何协同工作。
Vagrant 和 Docker 的区别,该如何选?
·665 字·2 分钟
本文介绍了 Vagrant 和 Docker 的区别,分析了它们各自的使用场景和优势,帮助读者选择合适的工具来管理虚拟机或容器。
你一定要了解这 17 条 Docker 最佳实践!
·8494 字·17 分钟
本文分享了在编写 Dockerfiles 和使用 Docker 时应遵循的一些最佳实践,包括多阶段构建、镜像优化、安全性等方面的建议。
Docker 常用命令
·235 字·1 分钟
一个 Docker 常用命令小纸条,记录一些常用的 Docker 命令和操作,方便日常使用和参考。