docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Jenkins+Docker部署

Jenkins + Docker完整部署指南(附详细步骤)

作者:声声长乐

Jenkins作为目前持续集成中使用较为广泛的工具,在实际生产过程中通过结合众多的插件,从而实现工程的持续构建、持续部署,这篇文章主要介绍了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 + OEnterCtrl + 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
重要说明:

保存文件:

步骤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:配置阿里云安全组

  1. 登录阿里云控制台

  2. 进入 ECS控制台

  3. 选择你的实例

  4. 点击 安全组配置

  5. 点击 配置规则入方向

  6. 点击 手动添加快速添加

添加以下规则:

端口范围授权对象说明
22/220.0.0.0/0SSH
8080/80800.0.0.0/0Jenkins Web
50000/500000.0.0.0/0Jenkins Agent

注意: 0.0.0.0/0 表示允许所有IP访问,生产环境建议限制特定IP

第五部分:访问和初始化Jenkins

步骤1:访问Jenkins

在浏览器中打开:

http://你的服务器公网IP:8080/jenkins

例如:http://186.141.86.234:8080/jenkins

步骤2:解锁Jenkins

  1. 页面会显示 "Unlock Jenkins"

  2. 粘贴之前获取的初始管理员密码

  3. 点击 Continue

步骤3:安装插件

选择 "Install suggested plugins"(安装推荐插件)

等待插件安装完成(约5-10分钟,取决于网络速度)

推荐额外安装的插件:

步骤4:创建管理员用户

填写以下信息:

点击 Save and Continue

步骤5:实例配置

Jenkins URL会自动填充为:http://你的IP:8080/Jenkins

点击 Save and Finish

步骤6:开始使用Jenkins

点击 Start using Jenkins

恭喜!🎉 Jenkins已经成功安装并运行!

之后应该会写配置代码仓库然后定时构建之类的,bye~

总结 

到此这篇关于Jenkins + Docker完整部署指南的文章就介绍到这了,更多相关Jenkins+Docker部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文