
foxylion/jenkins该项目旨在构建预配置的Jenkins 2 Docker镜像,提供运行全Docker支持的Jenkins所需的所有插件,支持多Docker从节点和Docker Pipeline插件,适用于快速部署Docker环境下的Jenkins主从架构。
Docker Hub上提供三个镜像:Jenkins主节点、SSH从节点和JNLP从节点。
最新镜像可在Docker Hub获取。
Jenkins主节点镜像提供预配置的Jenkins 2版本,包含运行Docker流水线所需的所有插件,并集成新的Blueocean流水线视图。
Jenkins主节点需暴露HTTP端口和从节点通信端口。
bashdocker run -d --name jenkins -p 80:8080 -p 50000:50000 \ -v /var/lib/jenkins:/var/jenkins_home \ foxylion/jenkins
JENKINS_PASS环境变量修改密码/var/lib/jenkins移除-v参数会阻止容器向主机文件系统写入数据,但容器删除时可能导致数据丢失。
最新镜像可在Docker Hub获取。
Jenkins SSH从节点镜像是轻量级解决方案,可在任何Docker启用的服务器上零依赖运行Jenkins从节点。其设计理念是在Docker主机上运行容器,暴露SSH服务器供Jenkins主节点连接。镜像支持配置可信SSH密钥或密码认证。
bashdocker run -d --name jenkins-slave --restart=unless-stopped \ -p 2222:22 \ -v /home/jenkins:/home/jenkins \ -v /var/run/docker.sock:/var/run/docker.sock \ -e SSH_KEY="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6CPOQDrq...faMvvidd+RVSfDBgJE1g3 ***" \ foxylion/jenkins-ssh-slave
在Jenkins主节点上配置新节点时需注意:
root/home/jenkinsdocker logs jenkins-slave获取从节点指纹并进行比对以下环境变量可自定义从节点行为:
| 环境变量 | 描述 | 默认值 |
|---|---|---|
SSH_PASSWORD | 用于配置密码认证 | jenkins |
SSH_KEY | 配置后仅允许使用此密钥认证 | - |
最新镜像可在Docker Hub获取。
Jenkins JNLP从节点镜像提供可配置的Jenkins从节点版本,支持凭据或JNLP从节点密钥认证。从节点容器启动时可自动创建节点,容器停止时自动移除节点。
bashdocker run -d --name jenkins-slave --restart=unless-stopped \ -v /home/jenkins:/home/jenkins \ -v /var/run/docker.sock:/var/run/docker.sock \ -e JENKINS_URL=[***] \ foxylion/jenkins-slave
默认情况下,从节点会自动创建临时Jenkins节点,名称由前缀docker-slave和容器主机名组成。
注意:JNLP从节点与主节点通信时不提供加密,不建议在不可信网络中使用。建议改用SSH从节点镜像。
以下环境变量可自定义从节点行为:
| 环境变量 | 描述 | 默认值 |
|---|---|---|
JENKINS_URL | Jenkins的HTTP访问URL | [***] |
JENKINS_SLAVE_ADDRESS | 启动TCP连接时用于连接Jenkins服务器的替代地址,会覆盖Jenkins主节点提供的地址 | - |
JENKINS_USER | 用于Jenkins主节点认证的用户 | admin |
JENKINS_PASS | 用于Jenkins主节点认证的密码 | admin |
SLAVE_NAME | Jenkins节点名称(必须与现有节点匹配),留空则自动生成 | - |
SLAVE_SECRET | 使用提供的JNLP密钥代替用户/密码认证 | - |
SLAVE_EXECUTORS | 从节点提供的执行器数量 | 1 |
SLAVE_LABELS | 从节点标签,使用空格分隔 | docker |
SLAVE_WORKING_DIR | 自定义工作目录(当无法在docker run命令中使用-w时) | - |
CLEAN_WORKING_DIR | 设置为true时,从节点启动时清理工作目录,可防止工作目录中存储的配置导致构建失败 | true |
当SLAVE_NAME环境变量留空时启用临时从节点功能。从节点会自动创建具有生成名称的新Jenkins节点,从节点关闭后Jenkins节点会被删除。如需避免此行为,使用持久从节点。
运行不自动创建Jenkins节点但使用JNLP从节点认证的从节点。
注意:必须将从节点的"远程根目录"设置为/home/jenkins。
bashdocker run -d \ -v /home/jenkins:/home/jenkins \ -v /var/run/docker.sock:/var/run/docker.sock \ -e JENKINS_URL=[***] \ -e SLAVE_NAME=docker-slave-028 \ foxylion/jenkins-slave
默认情况下,Jenkins从节点要求/home/jenkins挂载到Docker主机上的等效目录。
注意:主机上使用不同的目录路径会导致构建失败。了解更多(章节:"在容器内运行构建步骤")
如需在Docker主机上使用不同目录,可在启动容器时指定:
bashdocker run -d \ -w /tmp/jenkins-slave \ -v /tmp/jenkins-slave:/tmp/jenkins-slave \ -v /var/run/docker.sock:/var/run/docker.sock \ -e JENKINS_URL=[***] \ foxylion/jenkins-slave
以下链接有助于开始使用Jenkins流水线与Docker结合:
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务