Jenkins 部署文档(WSL + Docker 环境)
🚀 Jenkins 部署文档(WSL + Docker 环境)
1️⃣ 环境要求
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|
-p 50000:50000 |
|
-v ~/jenkins_home:/var/jenkins_home |
|
-v /var/run/docker.sock:/var/run/docker.sock |
|
--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 界面
-
打开浏览器,访问:
http://localhost:8080 -
输入刚才获取的初始密码,点击 Continue

Jenkins 解锁界面
4.3 安装推荐插件
-
选择 **”Install suggested plugins”**(安装推荐插件) -
等待插件安装完成(大约 5-10 分钟)
4.4 创建管理员用户
-
填写管理员信息:
-
Username: admin(或自定义) -
Password:设置一个强密码 -
Full name: Jenkins Admin -
Email address:你的邮箱 -
点击 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 |
|
-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 插件安装失败
原因:网络问题导致下载插件失败
解决方案:
-
进入 Jenkins → Manage Jenkins → Manage Plugins → Advanced -
修改 Update Site 为国内镜像: https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json -
点击 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 配置国内插件镜像
-
登录 Jenkins → Manage Jenkins → Manage Plugins → Advanced -
Update Site 设置为: https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json -
点击 Submit
7.2 配置 JDK 和 Maven(自动化构建)
在 Jenkins 中配置 JDK 和 Maven:
-
Manage Jenkins → Tools
-
JDK → 点击 Add JDK:
-
Name: JDK17 -
勾选 Install automatically -
选择版本: JDK 17u或JDK 11u -
Maven → 点击 Add Maven:
-
Name: Maven3 -
勾选 Install automatically
7.3 配置 GitHub 凭据
-
Manage Jenkins → Manage Credentials → Global → Add Credentials -
选择 Username with password 或 SSH Username with private key -
填写 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
📝 总结
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
夜雨聆风