容器化 agent 是什么
容器化 agent 把构建环境交给容器:声明式流水线用 docker agent 在指定镜像里执行步骤,或通过 Kubernetes 插件按 Pod 模板在集群中动态拉起。执行结束即销毁(多数配置),节点保持无状态、工具链版本随镜像固定;代价是镜像维护、缓存挂载与节点能力要求。
基本信息
| docker | agent { docker { image '...' } } |
|---|---|
| kubernetes | Pod 模板加容器列表,按需拉起 |
| 生命周期 | 作业结束即销毁(多数配置) |
| 缓存 | 需要挂载或缓存目录配合 |
| 节点要求 | 节点需装 Docker 或已接入集群 |
| 收益 | 镜像即环境,减少节点漂移问题 |
| 维护 | 镜像构建、更新与安全补丁有归属 |
| 诊断 | agent 日志里查看镜像拉取与容器启动记录 |
docker agent 示例
docker agent 示例
pipeline {
agent {
docker { image 'maven:3.9-eclipse-temurin-17' } // 固定构建环境
}
stages {
stage('build') {
steps {
sh 'mvn -B verify' // 容器内执行
}
}
}
}典型使用场景
- 工具链固定:用镜像锁定 JDK、Maven 或 Node 版本
- 动态扩缩:Kubernetes agent 按队列压力弹性拉起
- 多版本并行:不同镜像跑同一流水线验证兼容性
- 隔离构建:容器内环境干净,避免节点被污染
- 减少维护:节点无状态化,升级等于换镜像
- 缓存加速:挂载依赖缓存目录缩短构建时间
- 镜像预构建:依赖预装进镜像,节点无需预装工具
方式对比
| 方式 | 环境供给 | 注意 |
|---|---|---|
| docker agent | 节点上跑容器 | 节点需装 Docker |
| kubernetes agent | 集群内拉起 Pod | 模板与插件版本要匹配 |
| 生命周期 | 作业结束销毁 | 缓存需要显式挂载 |
| 镜像维护 | 版本与安全更新 | 旧镜像要定期淘汰 |
| 资源与权限 | 按容器声明 | 挂载目录权限问题常见 |
容器化 agent 让节点无状态化:镜像即环境,减少节点漂移问题。
节点未装 Docker:docker agent 直接失败,先核对节点能力。
Pod 模板与插件版本升级:先在测试实例演练再推广。
构建缓存用卷或缓存目录显式挂载:容器销毁后什么都留不下。
镜像内以高权限运行构建有风险:评估它与节点的权限交集,避免构建步骤触碰宿主资源。