乐于分享
好东西不私藏

Jenkins 部署文档(WSL + Docker 环境)

Jenkins 部署文档(WSL + Docker 环境)

🚀 Jenkins 部署文档(WSL + Docker 环境)


1️⃣ 环境要求

项目
要求
操作系统
Windows 10/11 专业版/企业版,已安装 WSL 2
WSL 发行版
Ubuntu 20.04 或 22.04
Docker
已安装 Docker Engine(参考上篇文档)
内存
至少 4GB(推荐 8GB+)
磁盘空间
至少 10GB 可用空间

2️⃣ 准备工作

2.1 确认 Docker 运行正常

# 检查 Docker 状态sudo service docker status# 如果未运行,启动 Dockersudo service docker start# 测试 Dockerdocker --versiondocker run hello-world

2.2 创建 Jenkins 数据目录

# 创建持久化目录(用于保存 Jenkins 配置和数据)mkdir -p ~/jenkins_home# 设置权限(Jenkins 容器内用户 UID 为 1000)sudo chown -R 1000:1000 ~/jenkins_home

3️⃣ 部署 Jenkins

3.1 拉取 Jenkins 镜像

# 拉取长期支持版(LTS,推荐)docker pull jenkins/jenkins:lts# 或拉取最新版docker pull jenkins/jenkins:latest

3.2 运行 Jenkins 容器

docker run -d \  --name jenkins \  -p 8080:8080 \  -p 50000:50000 \  -v ~/jenkins_home:/var/jenkins_home \  -v /var/run/docker.sock:/var/run/docker.sock \  --restart unless-stopped \  jenkins/jenkins:lts

参数说明

参数
说明
-d
后台运行
--name jenkins
容器名称
-p 8080:8080
映射 Jenkins Web 端口
-p 50000:50000
映射 Jenkins 代理端口
-v ~/jenkins_home:/var/jenkins_home
持久化 Jenkins 数据
-v /var/run/docker.sock:/var/run/docker.sock
让 Jenkins 容器内可以调用宿主机的 Docker(实现 Docker in Docker)
--restart unless-stopped
自动重启

3.3 验证容器运行状态

# 查看容器状态docker ps | grep jenkins# 查看日志docker logs jenkins

4️⃣ 配置 Jenkins

4.1 获取初始密码

Jenkins 首次启动时会生成一个初始管理员密码,通过以下命令查看:

# 方法一:从日志中获取docker logs jenkins 2>&1 | grep -A 5 "Please use the following password"# 方法二:从容器内文件读取docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

复制显示的密码(一串字符)。

4.2 访问 Jenkins Web 界面

  1. 打开浏览器,访问:http://localhost:8080

  2. 输入刚才获取的初始密码,点击 Continue

    Jenkins 解锁界面

4.3 安装推荐插件

  1. 选择 **”Install suggested plugins”**(安装推荐插件)
  2. 等待插件安装完成(大约 5-10 分钟)

4.4 创建管理员用户

  1. 填写管理员信息:

    • Usernameadmin(或自定义)
    • Password:设置一个强密码
    • Full nameJenkins Admin
    • Email address:你的邮箱
  2. 点击 Save and Continue

4.5 配置 Jenkins URL

  • Jenkins URL:默认 http://localhost:8080
  • 如果是远程访问,填写服务器的实际 IP 地址

点击 Save and Finish → Start using Jenkins


5️⃣ 常用操作

5.1 Docker 命令管理 Jenkins

# 查看 Jenkins 日志docker logs -f jenkins# 重启 Jenkinsdocker restart jenkins# 停止 Jenkinsdocker stop jenkins# 启动 Jenkinsdocker start jenkins# 进入 Jenkins 容器内部docker exec -it jenkins /bin/bash# 删除 Jenkins 容器(数据会保留,因为挂载了卷)docker rm -f jenkins

5.2 备份与恢复

备份 Jenkins 数据

# 压缩备份tar -czf jenkins_backup_$(date +%Y%m%d).tar.gz ~/jenkins_home/

恢复 Jenkins 数据

# 停止 Jenkinsdocker stop jenkins# 删除旧数据sudo rm -rf ~/jenkins_home# 解压备份tar -xzf jenkins_backup_20241201.tar.gz -C ~/# 重启 Jenkinsdocker start jenkins

5.3 更新 Jenkins

# 拉取最新镜像docker pull jenkins/jenkins:lts# 删除旧容器(数据保留)docker rm -f jenkins# 使用新镜像重新运行docker run -d \  --name jenkins \  -p 8080:8080 \  -p 50000:50000 \  -v ~/jenkins_home:/var/jenkins_home \  -v /var/run/docker.sock:/var/run/docker.sock \  --restart unless-stopped \  jenkins/jenkins:lts

6️⃣ 故障排查

6.1 容器无法启动

查看详细错误

docker logs jenkins

常见错误

错误
原因
解决方案
Permission denied
目录权限问题
sudo chown -R 1000:1000 ~/jenkins_home
Address already in use
端口 8080 被占用
修改端口映射:-p 8081:8080
No space left on device
磁盘空间不足
docker system prune -a

 清理无用数据

6.2 Jenkins 无法连接 Docker

如果 Jenkins 流水线中执行 docker 命令失败:

# 检查 Docker socket 挂载docker inspect jenkins | grep -A 5 "Mounts"# 确认宿主机 Docker 权限ls -l /var/run/docker.sock

解决方案:确保启动容器时已挂载 -v /var/run/docker.sock:/var/run/docker.sock

6.3 插件安装失败

原因:网络问题导致下载插件失败

解决方案

  1. 进入 Jenkins → Manage Jenkins → Manage Plugins → Advanced
  2. 修改 Update Site 为国内镜像:

    https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
  3. 点击 Submit,然后点击 Check now

6.4 忘记管理员密码

# 进入容器docker exec -it jenkins /bin/bash# 查看用户配置cat /var/jenkins_home/users/admin/config.xml# 或者直接删除安全配置(会清除所有用户设置)rm -f /var/jenkins_home/config.xmldocker restart jenkins

7️⃣ 进阶配置

7.1 配置国内插件镜像

  1. 登录 Jenkins → Manage Jenkins → Manage Plugins → Advanced
  2. Update Site 设置为:

    https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
  3. 点击 Submit

7.2 配置 JDK 和 Maven(自动化构建)

在 Jenkins 中配置 JDK 和 Maven:

  1. Manage Jenkins → Tools

  2. JDK → 点击 Add JDK

    • Name: JDK17
    • 勾选 Install automatically
    • 选择版本:JDK 17u 或 JDK 11u
  3. Maven → 点击 Add Maven

    • Name: Maven3
    • 勾选 Install automatically

7.3 配置 GitHub 凭据

  1. Manage Jenkins → Manage Credentials → Global → Add Credentials
  2. 选择 Username with password 或 SSH Username with private key
  3. 填写 GitHub 账号密码或 SSH 密钥

8️⃣ 快速部署脚本

将以下内容保存为 deploy-jenkins.sh

#!/bin/bashecho"🚀 开始部署 Jenkins..."# 创建数据目录mkdir -p ~/jenkins_homesudo chown -R 1000:1000 ~/jenkins_home# 拉取镜像echo"📦 拉取 Jenkins 镜像..."docker pull jenkins/jenkins:lts# 停止并删除旧容器echo"🛑 清理旧容器..."docker stop jenkins 2>/dev/nulldocker rm jenkins 2>/dev/null# 启动新容器echo"✨ 启动 Jenkins 容器..."docker run -d \  --name jenkins \  -p 8080:8080 \  -p 50000:50000 \  -v ~/jenkins_home:/var/jenkins_home \  -v /var/run/docker.sock:/var/run/docker.sock \  --restart unless-stopped \  jenkins/jenkins:lts# 等待启动echo"⏳ 等待 Jenkins 启动(约30秒)..."sleep 30# 获取初始密码echo"🔐 初始管理员密码:"docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPasswordecho""echo"✅ Jenkins 部署完成!"echo"🌐 访问地址: http://localhost:8080"echo"📝 请使用上面的密码登录"

运行脚本:

chmod +x deploy-jenkins.sh./deploy-jenkins.sh

📝 总结

步骤
操作
状态
1
确认 Docker 环境
2
创建数据目录
3
拉取 Jenkins 镜像
4
运行 Jenkins 容器
5
获取初始密码
6
Web 初始化配置
7
安装推荐插件
8
创建管理员用户