docker 构建 Jenkins2.528
docker 构建 Jenkins2.528.2-1
打开一个终端窗口。
使用以下 docker network create 命令在 Docker 中创建一个 bridge 网络:
docker network create jenkins
为了能在 Jenkins 节点中执行 Docker 命令,使用以下 docker run 命令下载并运行 docker:dind(Docker in Docker)Docker 镜像:
docker run \
--name jenkins-docker \
--rm \
--detach \
--privileged \
--network jenkins \
--network-alias docker \
--env DOCKER_TLS_CERTDIR=/certs \
--volume jenkins-docker-certs:/certs/client \
--volume jenkins-data:/var/jenkins_home \
--publish 2376:2376 \
docker:dind \
--storage-driver overlay2
下面是对上面各选项的解释:
- (可选)指定 Docker 容器的名称。如果不指定,Docker 会自动生成一个唯一名称。
- (可选)容器关闭时自动删除该容器(运行出来的实例)。
- (可选)后台运行容器。可用
docker stop jenkins-docker停止。 - 运行 Docker in Docker 需要
--privileged权限才能正常工作,这个要求可能会在未来较新的 Linux 内核中被取消。 - 让容器加入先前创建的
jenkins网络。 - 将此 Docker in Docker 容器在
jenkins网络内以docker这个主机名对外提供服务。 - 启用 Docker 服务器的 TLS。由于使用了 privileged 容器,推荐开启 TLS,但这需要下面提到的共享 volume。该变量定义 TLS 证书管理的根目录。
- 将容器内
/certs/client映射到名为jenkins-docker-certs的 Docker 卷。 - 将容器内
/var/jenkins_home映射到名为jenkins-data的 Docker 卷。这样外部由这个 Docker daemon 控制的容器就能从 Jenkins 中挂载数据。 - (可选)在宿主机暴露 Docker 守护进程端口。用于从宿主机运行
docker命令以控制内部 Docker daemon。 - 运行
docker:dind镜像本身。如果你没有预先下载,可以执行docker image pull docker:dind。 - 设置 Docker 的存储驱动。可参考 Docker storage drivers 文档选择其它选项。
如果你复制粘贴上面命令时遇到问题,可用以下无注释精简版本:
docker run --name jenkins-docker --rm --detach \
--privileged --network jenkins --network-alias docker \
--env DOCKER_TLS_CERTDIR=/certs \
--volume jenkins-docker-certs:/certs/client \
--volume jenkins-data:/var/jenkins_home \
--publish 2376:2376 \
docker:dind --storage-driver overlay2
自定义官方 Jenkins Docker 镜像:执行以下两步
第一步:创建 Dockerfile,内容如下:
FROM jenkins/jenkins:2.528.2-jdk21
USER root
RUN apt-get update && apt-get install -y lsb-release ca-certificates curl && \
install -m 0755 -d /etc/apt/keyrings && \
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc && \
chmod a+r /etc/apt/keyrings/docker.asc && \
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/debian $(. /etc/os-release && echo \"$VERSION_CODENAME\") stable" \
| tee /etc/apt/sources.list.d/docker.list > /dev/null && \
apt-get update && apt-get install -y docker-ce-cli && \
apt-get clean && rm -rf /var/lib/apt/lists/*
USER jenkins
RUN jenkins-plugin-cli --plugins "blueocean docker-workflow json-path-api"
第二步:基于 Dockerfile 构建镜像,并给镜像起个有意义的名字,例如:
docker build -t myjenkins-blueocean:2.528.2-1 .
如果你之前没有下载官方 Jenkins 镜像,上面的步骤会自动下载。
使用以下 docker run 命令运行你创建的 Jenkins 镜像:
docker run \
--name jenkins-blueocean \
--restart=on-failure \
--detach \
--network jenkins \
--env DOCKER_HOST=tcp://docker:2376 \
--env DOCKER_CERT_PATH=/certs/client \
--env DOCKER_TLS_VERIFY=1 \
--publish 8080:8080 \
--publish 50000:50000 \
--volume jenkins-data:/var/jenkins_home \
--volume jenkins-docker-certs:/certs/client:ro \
myjenkins-blueocean:2.528.2-1
下面是选项解释:
- (可选)指定 Jenkins 容器的名称。
- 如果容器停止则自动重启。手动停止的容器只有在 Docker daemon 重启或你手动启动时才会恢复。
- (可选)后台运行,输出容器 ID。不加
--detach会显示容器日志。 - 加入前面创建的
jenkins网络。此时 Jenkins 可通过主机名 docker 连接到 Docker daemon。 - 指定 docker、docker-compose 等工具连接 Docker daemon 所需的环境变量。
- 将容器的 8080 端口映射到宿主机 8080 端口。比如若希望宿主机的 49000 访问 Jenkins,可写成:
-p 49000:8080。 - (可选)将容器 50000 端口映射到宿主机,用于 inbound Jenkins agent 。如果你修改了 Jenkins controller 的 TCP agent 端口,则需对应修改这里。
- 将容器的
/var/jenkins_home持久化到 Docker volumejenkins-data。也可以映射到宿主机路径。 - 将
/certs/client挂载为只读 volume,用于 Docker TLS 客户端证书。 - 指定运行的镜像名。
如果复制粘贴有问题,请使用以下无注释版本:
docker run --name jenkins-blueocean --restart=on-failure --detach \
--network jenkins --env DOCKER_HOST=tcp://docker:2376 \
--env DOCKER_CERT_PATH=/certs/client --env DOCKER_TLS_VERIFY=1 \
--publish 8080:8080 --publish 50000:50000 \
--volume jenkins-data:/var/jenkins_home \
--volume jenkins-docker-certs:/certs/client:ro \
myjenkins-blueocean:2.528.2-1
Jenkins 推荐的插件说明
✅ Jenkins 插件解释大全(你的列表逐个解释)
1. Folders
用于在 Jenkins 中创建 文件夹,用来:
- 对 Job 进行分类
- 多团队、多项目环境下隔离和管理 Job
比如:
/DevOps
/K8s-Build
/Helm-Publish
/Frontend
/Vue-Build
2. OWASP Markup Formatter
用于限制 Jenkins 页面可以渲染的 HTML 格式。
作用:
- 防止 XSS
- 限制任意 HTML 或脚本被执行
- 提高安全性
一般:
- 企业会选 “Safe HTML”
- 个人环境随便选
3. Build Timeout
给 Job 设置超时时间。
功能:
- 防止步骤卡死无限阻塞(如 Maven 依赖卡住)
- 自动中断超时的构建
示例:
timeout(time: 30, unit: 'MINUTES')
4. Credentials Binding
让你能在 Pipeline 中安全注入:
- 密码
- Token
- SSH Key
- Secret 文件
例如:
withCredentials([string(credentialsId: 'docker-pass', variable: 'PASS')]) {
sh "docker login -u user -p $PASS"
}
5. Timestamper
给 Jenkins 控制台输出加上时间戳。
例如:
[2025-11-21 10:15:30] Building Docker image...
用途:
- 排查性能问题
- 对齐日志时间
- 加快故障追踪
6. Workspace Cleanup
构建前或构建后自动清理 Workspace。
用途:
- 避免磁盘占满
- 避免构建之间互相污染文件
- 保证构建可重复性
7. Ant
支持用 Apache Ant 构建 Java 项目。
用途:
- 很老的 Java 项目(你不写也可能看到)
8. Gradle
让 Jenkins 执行 Gradle 构建。
常用于:
- Spring Boot 项目
- Kotlin 项目
9. Pipeline
Jenkins 必备插件,让你可以写:
✔️ Jenkinsfile
✔️ 声明式 Pipeline
✔️ 脚本式 Pipeline
没有它 Jenkins Pipeline 就不能用。
10. GitHub Branch Source
用于:
✔️ 自动扫描 GitHub 仓库
✔️ 多分支流水线(Multibranch Pipeline)
✔️ GitHub Webhook 集成
✔️ PR 触发构建
你不用手动创建每个分支的 job。
11. Pipeline: GitHub
让 Pipeline 里面可以使用 GitHub 相关步骤:
- PR 管理
- GitHub API 调用
- GitHub 状态反写
12. Groovy Libraries(Shared Libraries)
用于:
✔️ 复用 Pipeline 代码
✔️ 把公共逻辑写成函数
✔️ 多项目共享同一套构建逻辑
大型企业 CI/CD 标准化必备。
13. Pipeline Graph View
提供新的 Pipeline 可视化图表:
- 更清晰展示 Stage
- 能看到并行步骤情况
比传统 BlueOcean 更轻量。
14. Git
允许 Jenkins 从 Git 仓库拉取代码。
没有它无法 git clone。
15. SSH Build Agents
让 Jenkins 使用 SSH 方式连接到远程机器作为 agent。
用途:
- 构建机分布在多台服务器
- 动态扩容
- 弹性代理
16. Matrix Authorization Strategy
提供 矩阵权限控制:
可以权限细化到:
- 某个 Job
- 某个用户
- 某个操作(Build/View/Delete/Configure)
企业常用来做 RBAC 权限控制。
17. LDAP
让 Jenkins 接入企业 LDAP/AD 做统一身份认证。
用于:
- 公司员工统一账号登录 Jenkins
- 权限自动同步到 Jenkins
18. Email Extension
比默认邮件通知更强:
✔️ 模板可定制
✔️ 失败邮件带详细日志
✔️ 成功/失败不同模板
企业常用标准通知插件。
19. Mailer
最基础的邮件发送插件(基础版)。
Email Extension 是它的增强版。
20. Dark Theme
Jenkins 黑暗主题。
好处:
- 不伤眼
- 稳定性比 BlueOcean 更强
21. Localization: Chinese (Simplified)
Jenkins 中文语言包。
让 Jenkins UI 变中文。

浙公网安备 33010602011771号