Ubuntu 24.04 LTS 安装 jenkins
Ubuntu 22.04 LTS 安装 jenkins
- 安装 Docker(若未安装):
sudo apt update && sudo apt install -y docker.io docker-compose-plugin
sudo systemctl enable --now docker
sudo usermod -aG docker $USER # 非root用户添加docker权限(需重启生效)
##换源 并且配置Docker资源限制(避免占用过多内存)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors" : ["https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc",
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://dockerproxy.com",
"https://gst6rzl9.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"http://mirrors.ustc.edu.cn/",
"https://mirrors.tuna.tsinghua.edu.cn/",
"http://mirrors.sohu.com/"
],
"insecure-registries" : [
"registry.docker-cn.com",
"docker.mirrors.ustc.edu.cn"
],
"debug": true,
"experimental": false
"default-shm-size": "256m", # 共享内存限制
"default-ulimits": {
"memlock": { "hard": -1, "soft": -1 }
}
}
EOF
sudo systemctl restart docker
部署 Jenkins(Docker 容器,资源限制)
1手动创建目录并设置正确权限
# 1. 宿主机创建挂载目录
mkdir -p ./jenkins_data
# 2. 赋予目录正确权限(uid=1000是Jenkins容器内默认用户ID)
sudo chown -R 1000:1000 ./jenkins_data
# 3. 启动容器并挂载该目录
docker run -d -p 8081:8080 -v ./jenkins_data:/var/jenkins_home jenkins/jenkins:lts-jdk11
2使用 Docker Volume 管理权限
创建docker-compose.yml文件,定义 Jenkins 服务并限制资源:
Docker Volume 会自动处理权限匹配,适合长期使用:
# 1. 创建Docker Volume(会自动分配存储路径和权限)
docker volume create jenkins_volume
# 2. 启动容器并挂载该Volume
docker run -d -p 8081:8080 -v jenkins_volume:/var/jenkins_home jenkins/jenkins:lts-jdk11
version: '3.8'
services:
jenkins:
image: jenkins/jenkins:lts-jdk11 # 选择轻量的LTS版本,基于JDK11
container_name: jenkins
restart: always
ports:
- "8081:8080" # 映射到宿主机8081端口,避免与GitLab冲突
- "50000:50000"
volumes:
- ./jenkins_data:/var/jenkins_home # 持久化Jenkins数据
- /var/run/docker.sock:/var/run/docker.sock # 挂载Docker守护进程,实现容器内操作Docker
deploy:
resources:
limits:
cpus: '1' # 限制1核CPU
memory: '1500M' # 限制1.5GB内存
启动 Jenkins:
docker compose up -d
初始化 Jenkins
获取初始密码:
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
#复制输出的密码,浏览器访问 http://宿主机IP:8081,输入密码进入初始化页面。
配置全局工具(JDK、Maven、Git)
Jenkins 需要集成 JDK、Maven 和 Git 来构建 Java 项目,通过 “全局工具配置” 完成:
进入 Jenkins → 管理 Jenkins → 全局工具配置:
。JDK:选择 “安装自动安装”,版本选11(与 Jenkins 镜像兼容)。
。Maven:选择 “安装自动安装”,版本选3.8.x(稳定版)。
。Git:若宿主机已安装 Git,可直接填写/usr/bin/git;否则选择 “安装自动安装”。
创建 Java 项目流水线(以 Spring Boot 为例)
步骤 1:编写 Jenkinsfile(项目根目录)
pipeline {
agent any
tools {
jdk 'jdk11' // 对应全局工具配置的JDK名称
maven 'maven3.8' // 对应全局工具配置的Maven名称
}
stages {
stage('拉取代码') {
steps {
git url: 'http://GitLab宿主机IP/你的用户名/项目仓库.git',
branch: 'main',
credentialsId: 'gitlab-credentials' // 需提前在Jenkins中配置GitLab凭证
}
}
stage('编译构建') {
steps {
sh 'mvn clean package -DskipTests' // 跳过测试加快构建(生产环境建议保留测试)
}
post {
success {
archiveArtifacts 'target/*.jar' // 归档构建产物
}
}
}
stage('构建Docker镜像') {
steps {
sh '''
docker build -t your-java-app:${BUILD_NUMBER} .
docker tag your-java-app:${BUILD_NUMBER} your-java-app:latest
'''
}
}
stage('运行Docker容器') {
steps {
sh 'docker run -d -p 8082:8080 --name java-app your-java-app:latest'
}
}
}
post {
always {
cleanWs() // 清理工作空间,释放资源
}
}
}
步骤 2:在项目根目录编写 Dockerfile
FROM openjdk:11-jre-slim
WORKDIR /app
COPY target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
步骤 3:在 Jenkins 中创建流水线项目
- 进入 Jenkins → 新建项目 → 选择 “流水线” → 命名项目。
- 配置 “流水线” 部分:
。选择 “从 SCM” → SCM 选 “Git” → 填写 GitLab 仓库地址。
。凭证选择之前配置的gitlab-credentials(需提前在 “凭证管理” 中添加 GitLab 账号密码)。
。脚本路径填写Jenkinsfile(与项目根目录一致)。

浙公网安备 33010602011771号