Jenkins + Docker完整部署指南(附详细步骤)
我看了一些别人发的博客也用AI提供部署步骤,然后完整的部署配置了一遍,可以成功运行啦!PS:我的服务器是阿里云有折扣买的
第一部分:升级JDK到Java 21
我的jdk版本太低了,所以要升级一下
步骤1:检查当前Java版本
# 查看当前Java版本 java -version # 查看所有已安装的Java版本 update-alternatives --display java
步骤2:安装Java 21
# 更新软件包列表 sudo apt update # 安装OpenJDK 21 sudo apt install -y openjdk-21-jdk openjdk-21-jre # 验证安装 java -version
预期输出:
openjdk version "21.0.x" 2024-xx-xx
OpenJDK Runtime Environment (build 21.0.x+xx-Ubuntu-...)
OpenJDK 64-Bit Server VM (build 21.0.x+xx-Ubuntu-..., mixed mode, sharing)
步骤3:配置系统默认Java版本
如果系统中有多个Java版本,需要设置默认版本:
# 配置默认Java版本 sudo update-alternatives --config java # 会显示类似以下内容: # Selection Path Priority Status # ------------------------------------------------------------ # 0 /usr/lib/jvm/java-21-openjdk-amd64/bin/java 2111 auto mode # 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode # * 2 /usr/lib/jvm/java-21-openjdk-amd64/bin/java 2111 manual mode # 输入序号选择Java 21(通常是最新版本的序号) # 例如输入:0 或 2 # 同样配置javac sudo update-alternatives --config javac
步骤4:配置JAVA_HOME环境变量
# 查找Java 21安装路径 sudo update-alternatives --config java # 记下Java 21的路径,例如:/usr/lib/jvm/java-21-openjdk-amd64 # 编辑环境配置文件 sudo nano /etc/environment
在文件中添加或修改 JAVA_HOME:
JAVA_HOME="/usr/lib/jvm/java-21-openjdk-amd64"
保存并退出(Ctrl + O,Enter,Ctrl + X)
# 使配置生效 source /etc/environment # 验证JAVA_HOME echo $JAVA_HOME java -version
步骤5:卸载旧版本Java
注意:确认新版本工作正常后再卸载旧版本
# 列出所有Java相关包 dpkg -l | grep -i jdk # 卸载JDK 11 sudo apt remove -y openjdk-11-jdk openjdk-11-jre # 清理残留配置 sudo apt autoremove -y sudo apt autoclean
步骤6:验证升级结果
# 检查Java版本 java -version # 检查javac版本 javac -version # 检查JAVA_HOME echo $JAVA_HOME # 检查PATH which java
全部显示Java 21即为成功! ✅
第二部分:安装Docker
步骤1:卸载旧版本Docker(如果存在)
sudo apt remove docker docker-engine docker.io containerd runc
步骤2:更新系统并安装依赖
# 更新软件包索引
sudo apt update
# 安装必要的依赖包
sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release \
software-properties-common步骤3:添加Docker官方GPG密钥
# 创建密钥目录 sudo mkdir -p /etc/apt/keyrings # 下载并添加Docker GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 设置密钥权限 sudo chmod a+r /etc/apt/keyrings/docker.gpg
步骤4:添加Docker仓库
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable" | sudo tee /etc/apt/sources.list.d/docker.list
步骤5:安装Docker Engine
# 更新软件包索引 sudo apt update # 安装Docker及相关组件 sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
步骤6:启动并设置Docker开机自启
# 启动Docker服务 sudo systemctl start docker # 设置开机自启动 sudo systemctl enable docker # 检查Docker状态 sudo systemctl status docker
步骤7:配置Docker权限(重要)
# 创建docker用户组(通常已存在) sudo groupadd docker 2>/dev/null || true # 将当前用户添加到docker组 sudo usermod -aG docker $USER # 刷新用户组权限(二选一) # exit 后重新连接服务器
步骤8:验证Docker安装
# 检查Docker版本 docker --version # 运行测试容器 docker run hello-world
预期输出:
Hello from Docker!
This message shows that your installation appears to be working correctly.
如果看到以上信息,说明Docker安装成功!✅
❌网络问题,无法连接到Docker Hub,因为Docker Hub在国内访问不稳定「failed to resolve reference "docker.io/library/hello-world:latest":」
解决方案:配置阿里云个人镜像加速器
我买的阿里云的服务器所以可以登录阿里云控制台 → 容器镜像服务 → 镜像工具 → 镜像加速器,会看到类似这样的地址:
https://xxxxx.mirror.aliyuncs.com
# 直接运行命令:
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://地址.mirror.aliyuncs.com",//替换成你的镜像加速的地址
"https://docker.1panel.live",
"https://docker.rainbond.cc"
]
}
EOF
# 重启Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
# 验证
docker info | grep -A 10 "Registry Mirrors"
# 测试拉取镜像
docker run hello-world
# 如果成功,应该看到:
# Hello from Docker!
# This message shows that your installation appears to be working correctly.第二部分:安装Docker Compose
Docker Compose已经作为插件安装,验证一下:
# 检查Docker Compose版本 docker compose version
如果显示版本信息(如 Docker Compose version v2.x.x),说明已经安装成功!
如果没有安装,手动安装:
# 下载Docker Compose sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # 添加执行权限 sudo chmod +x /usr/local/bin/docker-compose # 创建软链接 sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose # 验证安装 docker-compose --version
第三部分:使用Docker部署Jenkins(持久化配置,Java 21)
步骤1:创建项目目录结构
# 创建Jenkins项目目录(可以在你自己想放的目录下,我的在/root/mynane/main下面创建的) mkdir -p jenkins-docker cd jenkins-docker # 创建数据持久化目录(一定要在jenkins-docker目录下运行哦) mkdir -p jenkins_home # 查看当前目录结构 pwd # 应该显示:/root/你的用户名/jenkins-docker
步骤2:设置目录权限
# Jenkins容器内使用UID 1000运行 # 需要给jenkins_home目录正确的权限 sudo chown -R 1000:1000 jenkins_home # 验证权限 ls -la jenkins_home
步骤3:创建docker-compose.yml配置文件
# 使用nano编辑器创建配置文件 vim docker-compose.yml
将以下内容粘贴到文件中:
version: '3.8'
services:
jenkins:
image: jenkins/jenkins:lts-jdk21
container_name: jenkins
restart: unless-stopped
privileged: true
user: root
ports:
- "8080:8080" # Jenkins Web界面
- "50000:50000" # Jenkins代理通信端口
volumes:
# 持久化Jenkins数据
- ./jenkins_home:/var/jenkins_home
# 允许Jenkins使用主机的Docker
- /var/run/docker.sock:/var/run/docker.sock
# 挂载Docker二进制文件(可选,用于在Jenkins中执行docker命令)
- /usr/bin/docker:/usr/bin/docker
environment:
- JAVA_OPTS=-Duser.timezone=Asia/Shanghai -Dhudson.model.DirectoryBrowserSupport.CSP=
- JENKINS_OPTS=--prefix=/jenkins
networks:
- jenkins-network
networks:
jenkins-network:
driver: bridge
重要说明:使用
jenkins/jenkins:lts-jdk21镜像(支持最新的Jenkins LTS版本)如果想使用 Java 17,可以改为
jenkins/jenkins:lts-jdk17
保存文件:
按 esc
输入:wq 保存退出
步骤4:启动Jenkins容器
# 启动容器(后台运行) docker compose up -d # 查看容器状态 docker compose ps # 查看容器日志 docker compose logs -f jenkins
预期输出:
[+] Running 2/2
✔ Network jenkins-docker_jenkins-network Created
✔ Container jenkins Started
我运行docker compose up -d失败了「unknown: failed to resolve reference "docker.io/jenkins/jenkins:lts-jdk21":」
#解决方法:是网络原因,修改一下镜像就行
sudo tee /etc/docker/daemon.json <<'EOF'
{
"registry-mirrors": [
"https://x1doswo1.mirror.aliyuncs.com",
"https://docker.1panel.live",
"https://docker.rainbond.cc",
"https://docker.m.daocloud.io",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn",
"https://mirror.baidubce.com"
]
}
EOF然后在重启一下:
sudo systemctl daemon-reload
sudo systemctl restart docker
再次执行:
docker compose up -d
预期:Running from: /usr/share/jenkins/jenkins.war等
但是我的预期结果中有一个警告就是我在compose文件中写的版本号version:
「docker-compose.yml: the attribute
versionis obsolete, it will be ignored, please remove it to avoid potential confusion」
解决方法:sed -i '/^version:/d' docker-compose.yml
步骤5:等待Jenkins启动(约1-2分钟)
# 实时查看启动日志 docker compose logs -f jenkins # 看到以下信息说明启动成功: # Jenkins is fully up and running
按 Ctrl + C 退出日志查看
步骤6:获取Jenkins初始管理员密码
# 方式1:从日志中查看 docker compose logs jenkins | grep -A 5 "initialAdminPassword" # 方式2:从容器内查看 docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword # 方式3:从持久化目录查看 cat jenkins_home/secrets/initialAdminPassword
复制显示的密码,例如:a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
第四部分:配置服务器防火墙和安全组
步骤1:配置Ubuntu防火墙(UFW)
# 检查防火墙状态 sudo ufw status # 如果防火墙未启用,先启用 sudo ufw enable # 允许SSH(防止被锁在外面!) sudo ufw allow 22/tcp # 允许Jenkins Web端口 sudo ufw allow 8080/tcp # 允许Jenkins代理端口(如果需要) sudo ufw allow 50000/tcp # 重新加载防火墙 sudo ufw reload # 查看规则 sudo ufw status numbered
步骤2:配置阿里云安全组
登录阿里云控制台
进入 ECS控制台
选择你的实例
点击 安全组配置
点击 配置规则 → 入方向
点击 手动添加 或 快速添加
添加以下规则:
| 端口范围 | 授权对象 | 说明 |
|---|---|---|
| 22/22 | 0.0.0.0/0 | SSH |
| 8080/8080 | 0.0.0.0/0 | Jenkins Web |
| 50000/50000 | 0.0.0.0/0 | Jenkins Agent |
注意: 0.0.0.0/0 表示允许所有IP访问,生产环境建议限制特定IP
第五部分:访问和初始化Jenkins
步骤1:访问Jenkins
在浏览器中打开:
http://你的服务器公网IP:8080/jenkins
例如:http://186.141.86.234:8080/jenkins
步骤2:解锁Jenkins
页面会显示 "Unlock Jenkins"
粘贴之前获取的初始管理员密码
点击 Continue
步骤3:安装插件
选择 "Install suggested plugins"(安装推荐插件)
等待插件安装完成(约5-10分钟,取决于网络速度)
推荐额外安装的插件:
Git plugin(通常已包含)
Pipeline plugin(通常已包含)
HTML Publisher(生成测试报告)
Docker plugin(Docker支持)
Docker Pipeline(Docker Pipeline支持)
Blue Ocean(现代化UI)
Chinese (Simplified) plugin(中文支持)
步骤4:创建管理员用户
填写以下信息:
用户名:
admin(或自定义)密码:设置强密码
全名:你的名字
邮箱:你的邮箱
点击 Save and Continue
步骤5:实例配置
Jenkins URL会自动填充为:http://你的IP:8080/Jenkins
点击 Save and Finish
步骤6:开始使用Jenkins
点击 Start using Jenkins
恭喜!🎉 Jenkins已经成功安装并运行!

之后应该会写配置代码仓库然后定时构建之类的,bye~
总结
到此这篇关于Jenkins + Docker完整部署指南的文章就介绍到这了,更多相关Jenkins+Docker部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!


最新评论