Jnlp Agent Node Docker 镜像
提供结合基础组件运行Jenkins inbound agent的Docker镜像,便于在Kubernetes pod模板、Azure Container Instances、AWS ECS/Fargate等环境及其他依赖inbound agent的Jenkins代理系统中使用上游镜像。
Jenkins Inbound Agent Docker镜像文档
1. 概述
1.1 镜像简介
Jenkins Inbound Agent Docker镜像集合是一套预配置的Docker镜像,旨在简化Jenkins入站代理(Inbound Agent)的部署与运行。该镜像集合将运行Jenkins入站代理所需的基础组件与标准Docker镜像相结合,提供了开箱即用的代理环境。
1.2 主要用途
作为Jenkins控制器(Controller)的代理节点,用于执行构建、测试、部署等任务。通过入站模式(Agent主动连接控制器),解决传统出站模式(控制器主动连接Agent)中网络可达性限制问题,适用于动态容器化环境。
2. 核心功能与特性
- 基于标准镜像构建:采用官方标准Docker镜像作为基础,确保兼容性与稳定性。
- 入站代理模式:支持Agent主动连接Jenkins控制器,无需控制器暴露网络端口或直接访问Agent,适用于复杂网络环境。
- 轻量级设计:仅包含运行入站代理的核心组件,减少资源占用。
- 多环境适配:可直接作为容器模板应用于主流容器编排平台(如Kubernetes、AWS ECS/Fargate、Azure Container Instances等)。
3. 使用场景与适用范围
3.1 典型使用场景
- Kubernetes集群:作为Pod模板集成到Jenkins Kubernetes插件,实现动态代理调度。
- 云容器服务:在AWS ECS/Fargate、Azure Container Instances等Serverless容器服务中部署,弹性扩展Jenkins代理资源。
- 跨网络环境:在控制器与代理处于不同网络分区(如公网/内网隔离)时,通过入站模式建立连接。
- 临时任务代理:为一次性或周期性任务快速创建临时代理,任务完成后自动销毁。
3.2 适用范围
- Jenkins控制器版本:支持Jenkins 2.303.1及以上(需兼容入站代理协议)。
- 网络要求:Agent需能访问Jenkins控制器URL(HTTP/HTTPS)。
- 容器环境:支持Docker、containerd等主流容器运行时,兼容Kubernetes、Docker Compose等编排工具。
4. 使用方法与配置说明
4.1 基本使用(Docker Run)
通过docker run命令启动入站代理,需指定Jenkins控制器地址、代理密钥及代理名称。
命令示例:
bashdocker run -d \ -e JENKINS_URL="http://jenkins-controller:8080" \ # Jenkins控制器URL(需包含协议、主机、端口) -e JENKINS_SECRET="agent-secret-from-jenkins" \ # 代理密钥(从Jenkins控制器获取) -e JENKINS_AGENT_NAME="my-inbound-agent" \ # 代理名称(需在Jenkins控制器中预配置) jenkins/inbound-agent:latest # 镜像名称(可指定具体版本,如4.13-1)
4.2 环境变量配置
以下为核心环境变量说明,用于配置代理连接参数:
| 环境变量名 | 必选 | 描述 |
|---|---|---|
JENKINS_URL | 是 | Jenkins控制器URL(格式:http://<controller-host>:<port> 或 https://...) |
JENKINS_SECRET | 是 | 代理注册密钥,从Jenkins控制器的“节点管理”页面生成(路径:Manage Jenkins > Nodes > New Node) |
JENKINS_AGENT_NAME | 是 | 代理节点名称,需与Jenkins控制器中配置的节点名称一致 |
JENKINS_AGENT_WORKDIR | 否 | 代理工作目录(默认:/home/jenkins/agent) |
JENKINS_WEB_SOCKET | 否 | 是否通过WebSocket连接控制器(值:true/false,默认false) |
NO_PROXY | 否 | 无需代理的主机/IP列表(格式:host1,host2,ip1,ip2) |
4.3 Docker Compose配置示例
通过Docker Compose定义代理服务,适用于本地测试或小规模部署。
docker-compose.yml示例:
yamlversion: '3.8' services: jenkins-inbound-agent: image: docker.xuanyuan.run/jenkins/inbound-agent:latest environment: - JENKINS_URL=http://jenkins-controller:8080 # 替换为实际Jenkins控制器URL - JENKINS_SECRET=your-agent-secret # 替换为从Jenkins获取的代理密钥 - JENKINS_AGENT_NAME=compose-agent # 自定义代理名称 - JENKINS_AGENT_WORKDIR=/home/jenkins/workdir # 自定义工作目录 restart: unless-stopped # 异常退出后自动重启
启动命令:
bashdocker-compose up -d
4.4 Kubernetes Pod模板示例
在Jenkins中配置Kubernetes Pod模板时,可直接引用该镜像。以下为Pod模板核心配置片段:
yamlapiVersion: v1 kind: Pod spec: containers: - name: jenkins-agent image: docker.xuanyuan.run/jenkins/inbound-agent:latest env: - name: JENKINS_URL value: "http://jenkins-service:8080" # Jenkins控制器在K8s集群内的Service地址 - name: JENKINS_SECRET valueFrom: secretKeyRef: name: agent-secrets # 存储代理密钥的K8s Secret key: agent-secret - name: JENKINS_AGENT_NAME valueFrom: fieldRef: fieldPath: metadata.name # 使用Pod名称作为代理名称
5. 注意事项
- 密钥安全性:
JENKINS_SECRET为敏感信息,建议通过环境变量文件、Docker Secrets或Kubernetes Secrets管理,避免明文暴露。 - 网络连通性:确保Agent容器能够解析并访问
JENKINS_URL,可通过docker exec -it <container-id> curl <JENKINS_URL>验证网络连通性。 - 镜像版本:建议使用固定版本标签(如
4.13-1)而非latest,确保部署一致性。 - 资源限制:根据任务需求配置容器CPU/内存资源限制,避免影响Jenkins控制器或其他服务。
镜像拉取方式
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
轩辕镜像加速拉取命令点我查看更多 jnlp-agent-node 镜像标签
docker pull docker.xuanyuan.run/jenkins/jnlp-agent-node:<标签>
DockerHub 原生拉取命令
docker pull jenkins/jnlp-agent-node:<标签>
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务