欢迎光临
我们一直在努力

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 version is 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~

    赞(0)
    未经允许不得转载:171主机测评 » Jenkins + Docker 完整部署指南
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址