Docker部署Jenkins持续集成
为什么用 Docker 运行 Jenkins
传统安装 Jenkins 需要配置 JDK、管理依赖、迁移麻烦。
用 Docker 部署 Jenkins 持续集成环境,只需一条命令就能拉取镜像并启动容器,升级或迁移时也只需更换镜像,省心又干净。
无论你是在个人服务器还是云主机上,这个方法都通用。
环境准备与检查
在开始之前,你需要一台安装好 Docker 的 Linux 服务器(推荐 CentOS 7+ 或 Ubuntu 18.04+)。
用以下命令检查 Docker 是否就绪:
docker --version
docker info
如果未安装 Docker,先执行官方一键脚本:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo systemctl start docker
sudo systemctl enable docker
注意: 不要忘记将当前用户加入 docker 组,避免每次使用 sudo:
sudo usermod -aG docker $USER
# 退出重新登录使组生效
拉取 Jenkins 镜像并启动容器
Jenkins 官方推荐使用 LTS 版本,稳定可靠。
执行以下命令:
docker pull jenkins/jenkins:lts-jdk17
拉取完成后,启动容器并映射端口(宿主机 8080 映射到容器 8080,50000 用于 Jenkins 代理通信):
docker run -d --name jenkins -p 8080:8080 -p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
jenkins/jenkins:lts-jdk17
-d后台运行,--name指定容器名。-v jenkins_home:/var/jenkins_home创建数据卷持久化数据,容器删除后配置不丢失。
初始解锁与插件安装
容器启动后,访问 http://你的服务器IP:8080,Jenkins 要求输入初始管理员密码。
获取密码命令:
docker logs jenkins 2>&1 | grep -i password
或直接进入容器查看:
docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
复制密码,粘贴到 Web 页面解锁。
接着选择安装建议插件(Recommended plugins),等待自动安装。
如果网络慢,可以手动选择常用插件如 Git、Pipeline、Blue Ocean 等。
创建第一个持续集成任务
- 在 Jenkins 首页点击 新建任务 → 输入任务名称,选择 流水线(Pipeline)。
- 在流水线定义中,选择 Pipeline script 或 Pipeline script from SCM(推荐从代码仓库读取 Jenkinsfile)。
- 如果使用 SCM,填写 Git 仓库地址和凭据(如 GitHub 的 SSH Key 或用户名密码)。
- 保存后点击 立即构建,查看控制台输出。
以下是一个简单的 Jenkinsfile 示例(放在项目根目录):
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
sh 'echo Hello, Docker + Jenkins!'
}
}
stage('Test') {
steps {
echo 'Testing...'
// 这里可以添加测试命令
}
}
stage('Deploy') {
steps {
echo 'Deploying...'
// 部署到服务器或容器
}
}
}
post {
always {
echo 'Pipeline finished.'
}
}
}
常见问题与避坑指南
Q:
容器启动后无法访问 8080 端口? 检查云平台安全组是否放行 8080 端口,
以及服务器防火墙(sudo ufw status 或 firewall-cmd --list-ports)。
Q: Jenkins 重启后数据丢失? 请确认启动时使用了 -v jenkins_home:/var/jenkins_home 数据卷,否则数据写在容器内会被清除。
Q: 容器内安装插件超时? 可以更换 Jenkins 插件加速源,或者使用 Docker 网络代理。
对于国内用户,建议在 系统管理→插件管理→高级 中替换 URL 为国内镜像。
避坑: 不要在容器内修改 /var/jenkins_home 的权限!
如果因权限问题启动失败,可以在宿主机上设置目录权限:sudo chown -R 1000:1000 /var/lib/docker/volumes/jenkins_home/_data(1000 是 Jenkins 容器内用户的 UID)。
验证 CI/CD 流程
构建成功后,查看 Blue Ocean 界面(安装 Blue Ocean 插件后访问 http://IP:8080/blue)会更直观。
可以修改 Git 仓库中的代码并推送,触发自动构建,检查流水线是否按 stages 顺序执行。
当所有 stage 都显示绿色,说明你的 Docker 部署 Jenkins 持续集成环境已能正常使用。
如果你正在搭建持续集成体系,建议先按本文步骤完整执行,再根据自己的项目调整流水线逻辑。
遇到异常时优先检查 Docker 日志和 Jenkins 系统日志,结合常见问题解决。