本教程适用于 Linux 服务器(CentOS/Ubuntu),基于 Docker Compose 快速部署 Jenkins LTS 长期支持版本,针对性解决国内 Linux 环境部署 Jenkins 的核心痛点:
部署环境:Linux 服务器(CentOS/Ubuntu)、Docker & Docker Compose 已安装
服务器已正常安装并启动 Docker、Docker Compose,可通过以下命令验证:
# 查看Docker版本 docker --version # 查看Docker Compose版本 docker-compose --version
提前在宿主机创建对应目录、工具环境,用于容器挂载:
/home/cattle/Java/jdk-11.0.0.2
/home/cattle/Java/apache-maven-3.9.6
./jenkins
为解决容器内 Docker 权限不足问题,需获取宿主机 Docker 分组 GID,执行以下命令:
grep docker /etc/group
执行结果示例:docker:x:986:,其中 986 即为 Docker 分组 GID,需填写到 docker-compose 配置的 group_add 参数中。
docker:x:986:
group_add
在部署根目录创建 docker-compose.yml 文件,写入以下完整配置(已适配权限、时区、国内插件源、环境挂载):
docker-compose.yml
version: '3.8' services: jenkins: image: jenkins/jenkins:lts container_name: jenkins privileged: true ports: - "18080:8080" # Jenkins web访问端口 - "50000:50000" # Jenkins 代理节点通信端口 environment: # 设置上海时区 + 关闭插件仓库签名校验(适配国内镜像源) - "JAVA_OPTS=-Duser.timezone=Asia/Shanghai -Dhudson.model.DownloadService.noSignatureCheck=true" volumes: # 挂载宿主机JDK11,容器内编译Java项目 - "/home/cattle/Java/jdk-11.0.0.2:/var/jenkins_home/jdk-11" # 挂载宿主机Maven,容器内构建Maven项目 - "/home/cattle/Java/apache-maven-3.9.6:/var/jenkins_home/apache-maven-3.9.6" # Jenkins数据持久化,防止容器删除数据丢失 - "./jenkins:/var/jenkins_home" # 挂载Docker客户端命令,让容器内可执行docker指令 - "/usr/bin/docker:/usr/bin/docker" # 挂载Docker通信套接字,容器与宿主机Docker引擎通信 - "/var/run/docker.sock:/var/run/docker.sock" restart: always # 容器异常自动重启 group_add: - 986 # 替换为自己宿主机的Docker GID(前文查询的数值) networks: - new # 自定义网络 networks: new: driver: bridge
Jenkins 流水线构建、镜像打包、容器部署等场景需要在 Jenkins 容器内执行 Docker 命令,必须配置以下两项,否则会报权限拒绝 错误:
挂载Docker执行文件与通信套接字
/usr/bin/docker:/usr/bin/docker
/var/run/docker.sock:/var/run/docker.sock
添加Docker分组GID通过 group_add: 986 将 Jenkins 容器进程加入宿主机 Docker 用户组,彻底解决容器操作 Docker 无权限问题,务必替换为自己服务器的Docker GID。
group_add: 986
Jenkins 官方新版本开启了插件仓库签名认证机制,仅信任官方默认源,导致华为云、清华源等国内镜像源全部失效,插件无法下载。
配置参数说明:
-Dhudson.model.DownloadService.noSignatureCheck=true
该参数作用:关闭 Jenkins 对插件仓库配置文件的签名校验,允许自定义国内镜像源,是国内正常使用 Jenkins 插件的核心配置。
./jenkins:/var/jenkins_home
settings.xml
/var/jenkins_home/apache-maven-3.9.6/repository
默认官方插件源:https://updates.jenkins.io/download(国外地址,访问慢、经常超时)
https://updates.jenkins.io/download
替换为华为云国内镜像源:https://mirrors.huaweicloud.com/jenkins
https://mirrors.huaweicloud.com/jenkins
通过修改 Jenkins 插件中心配置文件 update-center.json,批量将官方下载地址替换为华为云国内镜像地址,实现插件高速下载。重要部署要求:Jenkins 的更新站点仅支持读取公网可访问的 HTTP/HTTPS 在线链接,无法读取本地文件。因此手动修改后的自定义 update-center.json 配置文件,必须上传托管至 Web 静态资源服务器、文件服务器、Gitee、GitHub 等可对外提供公开访问链接的平台。只有生成有效公网URL,Jenkins 才能远程拉取并加载自定义国内插件源配置。若你的服务器无外网访问权限、不方便自行部署托管文件,可直接使用我已永久托管在Gitee的成品配置链接,开箱即用。
update-center.json
已提前手动定制修改好适配华为云镜像的配置文件,适配国内网络环境,若服务器无法访问外网、官方源访问异常,可直接使用该配置,无需手动修改源地址:
国内插件源配置文件地址:https://raw.giteeusercontent.com/watermelon_peel/jenkins-update-center/raw/master/update-center.json
http://服务器IP:18080
在 docker-compose.yml 所在目录执行启动命令:
# 后台启动容器 docker-compose up -d # 查看容器运行状态 docker-compose ps # 查看启动日志(异常排查) docker-compose logs -f jenkins
首次访问需要解锁Jenkins,获取初始密码:
# 查看初始解锁密码 cat ./jenkins/secrets/initialAdminPassword
复制密码填入网页,完成初始化,建议跳过默认插件安装,配置完国内源后再手动安装插件。
JAVA_OPTS
Asia/Shanghai
restart: always
(注:部分内容可能由 AI 生成) 本文全文下载链接
(注:部分内容可能由 AI 生成)
本文全文下载链接
自己测试的经验来这里存档备份一下。哈哈哈
Featured Collection
Popular Ranking
Popular Events
Linux 环境 Docker Compose 部署 Jenkins 完整教程(含Docker权限、国内插件源适配)
一、教程概述
本教程适用于 Linux 服务器(CentOS/Ubuntu),基于 Docker Compose 快速部署 Jenkins LTS 长期支持版本,针对性解决国内 Linux 环境部署 Jenkins 的核心痛点:
部署环境:Linux 服务器(CentOS/Ubuntu)、Docker & Docker Compose 已安装
二、前置环境准备
2.1 基础依赖
服务器已正常安装并启动 Docker、Docker Compose,可通过以下命令验证:
2.2 预准备环境文件
提前在宿主机创建对应目录、工具环境,用于容器挂载:
/home/cattle/Java/jdk-11.0.0.2,用于 Jenkins 内部 Java 项目编译/home/cattle/Java/apache-maven-3.9.6,用于 Maven 项目构建打包./jenkins文件夹,持久化 Jenkins 配置、任务、插件数据2.3 获取宿主机Docker GID(关键)
为解决容器内 Docker 权限不足问题,需获取宿主机 Docker 分组 GID,执行以下命令:
执行结果示例:
docker:x:986:,其中 986 即为 Docker 分组 GID,需填写到 docker-compose 配置的group_add参数中。三、完整 Docker Compose 配置
在部署根目录创建
docker-compose.yml文件,写入以下完整配置(已适配权限、时区、国内插件源、环境挂载):四、核心配置详细注意事项
4.1 Docker 权限适配(容器内可用Docker)
Jenkins 流水线构建、镜像打包、容器部署等场景需要在 Jenkins 容器内执行 Docker 命令,必须配置以下两项,否则会报权限拒绝 错误:
挂载Docker执行文件与通信套接字
/usr/bin/docker:/usr/bin/docker:将宿主机 Docker 客户端命令挂载到容器内,让容器拥有 docker 执行指令/var/run/docker.sock:/var/run/docker.sock:Docker 守护进程通信文件,实现容器与宿主机 Docker 引擎交互,操作宿主机镜像、容器、网络添加Docker分组GID通过
group_add: 986将 Jenkins 容器进程加入宿主机 Docker 用户组,彻底解决容器操作 Docker 无权限问题,务必替换为自己服务器的Docker GID。4.2 插件仓库签名校验关闭(解决国内插件下载失败)
Jenkins 官方新版本开启了插件仓库签名认证机制,仅信任官方默认源,导致华为云、清华源等国内镜像源全部失效,插件无法下载。
配置参数说明:
该参数作用:关闭 Jenkins 对插件仓库配置文件的签名校验,允许自定义国内镜像源,是国内正常使用 Jenkins 插件的核心配置。
4.3 环境挂载说明
./jenkins:/var/jenkins_home持久化所有Jenkins数据,容器重建、升级不丢失配置、任务、插件settings.xml配置文件到Jenkins持久化目录./jenkins下,同时修改配置文件中的本地仓库路径,将其改为容器内部路径/var/jenkins_home/apache-maven-3.9.6/repository,保证Jenkins构建项目时可正常读取Maven本地仓库、生效自定义镜像及配置,避免构建依赖拉取异常。五、国内插件镜像源配置(关键步骤)
5.1 源替换原理
默认官方插件源:
https://updates.jenkins.io/download(国外地址,访问慢、经常超时)替换为华为云国内镜像源:
https://mirrors.huaweicloud.com/jenkins通过修改 Jenkins 插件中心配置文件
update-center.json,批量将官方下载地址替换为华为云国内镜像地址,实现插件高速下载。重要部署要求:Jenkins 的更新站点仅支持读取公网可访问的 HTTP/HTTPS 在线链接,无法读取本地文件。因此手动修改后的自定义update-center.json配置文件,必须上传托管至 Web 静态资源服务器、文件服务器、Gitee、GitHub 等可对外提供公开访问链接的平台。只有生成有效公网URL,Jenkins 才能远程拉取并加载自定义国内插件源配置。若你的服务器无外网访问权限、不方便自行部署托管文件,可直接使用我已永久托管在Gitee的成品配置链接,开箱即用。5.2 直接使用现成国内配置文件
已提前手动定制修改好适配华为云镜像的配置文件,适配国内网络环境,若服务器无法访问外网、官方源访问异常,可直接使用该配置,无需手动修改源地址:
国内插件源配置文件地址:https://raw.giteeusercontent.com/watermelon_peel/jenkins-update-center/raw/master/update-center.json
5.3 Jenkins 后台替换插件源步骤
http://服务器IP:18080,完成初始化解锁、管理员账号密码设置update-center.json链接六、启动与访问Jenkins
6.1 启动容器
在
docker-compose.yml所在目录执行启动命令:6.2 初始化解锁
首次访问需要解锁Jenkins,获取初始密码:
复制密码填入网页,完成初始化,建议跳过默认插件安装,配置完国内源后再手动安装插件。
七、常见问题排查
group_add的GID是否与宿主机Docker分组一致,重启容器生效JAVA_OPTS包含Asia/Shanghai时区配置八、服务持久化与重启
restart: always,服务器重启、容器异常退出后会自动重启Jenkins服务./jenkins目录,容器删除重建数据不丢失