使用Docker部署Jenkins(Java版)

目录

    • 使用Docker部署Jenkins
      • 技术支持
      • [1. 拉取镜像](#1. 拉取镜像)
      • [2. 准备工作](#2. 准备工作)
        • [2.1 配置Maven](#2.1 配置Maven)
      • [3. 启动容器](#3. 启动容器)
      • [4. 配置Jenkins](#4. 配置Jenkins)
      • [5. 遇到的BUG](#5. 遇到的BUG)
        • [5.1 Maven依赖下载权限不足](#5.1 Maven依赖下载权限不足)
        • [5.2 构建Docker镜像权限不足](#5.2 构建Docker镜像权限不足)

使用Docker部署Jenkins

技术支持

在本篇文章中需要用到的软件支持如下:

  • Docker:标题上有说使用Docker部署,所以Docker必然不可缺少,没有了解的话,可以看下博客中的Docker那篇文章,你的服务器上没有安装Docker的话是无法进行安装Jenkins操作的。
  • Maven:这个是部署Java项目所需要的,如果你要部署的项目不是,可以忽略。
  • JDK:这个是部署Java项目所需要的,如果你要部署的项目不是,可以忽略。
  • NodeJs:这个是部署前端项目所有需要的,如果你要部署的项目不是,可以忽略。我这里用的是nvm下载的nodejs,你们也可以选择直接下载nodejs。

1. 拉取镜像

首先打开DockerHub搜索你想要的镜像,这里直接搜索 Jenkins,这里打不开就上点魔法。

进入后,可以直接点击复制命令,然后到你的服务器拉取镜像即可。值得注意的是,现在的新版Jenkins已经不支持JDK8版本了,所以你可能要自行下载JDK的高版本,推荐 11 17 21的长期支持版本。

当然还有个更好的办法,可以直接选择携带JDK版本的镜像直接使用,这里我选择的是JDK7的版本。该版本中本身携带了JDK17和GIT,非常方便。版本选择如下:

接下来把你复制的命令直接到你的服务器,直接运行即可。

等他下载完成,可以使用查看镜像命令查看镜像

shell 复制代码
docker images

2. 准备工作

我要部署的是Java项目,所以我要准备maven,如果你的项目用不到,可以跳过本步骤

2.1 配置Maven

打开Maven官网 进行下载

下载完成后,手动上传到你的服务器

解压压缩包:

shell 复制代码
tar -zxvf 压缩包名称

配置环境变量,直接在编辑文件 /etc/profile 添加配置

复制代码
# maven 环境变量
export MAVEN_HOME=/export/maven/apache-maven-3.9.6
export PATH=$MAVEN_HOME/bin:$PATH

配置完成后,你可以通过下面的命令查看maven的版本,如果正常出现版本号则是正常。如果提示你没有JDK环境则是要配置JDK环境。

复制代码
mvn -v

我这里没有单独安装jdk,我直接使用的是Jenkins内部的jdk 把jdk挂载出来以后 配置到本机上配置环境变量即可。你们也可以自己单独安装下JDK,这里就不再赘述了,直接展示下jdk配置就好了。

**注意:**如果你也想使用Jenkins内部的jdk拿来用,你要先启动容器,在进行配置全局变量。

复制代码
# jenkins 内部的JDK17
export JAVA_HOME=/var/lib/docker/volumes/jenkins_jenkins-jdk17/_data
export PATH=$JAVA_HOME/bin:$PATH

3. 启动容器

下面这里是我使用docker-compose启动容器的脚本。

yaml 复制代码
version: '3'

volumes:
  jenkins-data:
  jenkins-jdk17:

services:
  jenkins:
    image: jenkins/jenkins:latest-jdk17
    # 以特权模式运行容器,允许容器内的进程拥有宿主机上的所有权限。这可以用来执行一些需要更高权限级别的操作
    privileged: true
    volumes:
    	# 这里是Jenkins的数据存储位置
      - jenkins-data:/var/jenkins_home
      	# 把Jenkins内部自带的jdk拿出来用
      - jenkins-jdk17:/opt/java/openjdk
      	# 把maven映射到容器内部
      - /export/maven/apache-maven-3.9.5:/usr/local/maven
      	# nodejs映射到容器内部
      - /export/nvm/nvm-0.39.5/versions/node/v14.21.3:/usr/local/nodejs
      # Docker套接字文件挂载到容器中,容器中可以与宿主机中docker通信
      - /var/run/docker.sock:/var/run/docker.sock
      # 可以使用和管理宿主机上的Docker引擎
      - /usr/bin/docker:/usr/bin/docker
    ports:
      - 8080:8080
      - 50000:50000
    container_name: jenkins
    mem_limit: 800m # 内存最大为800MB
    restart: "always"

启动完成后,可以查看下容器的状态:

复制代码
docker ps

4. 配置Jenkins

启动没问题以后,你就可以直接打开你的Jenkins了,访问地址就是你服务器ip:你设置的端口,如果进不去,请自行检查你的Jenkins是否启动成功,和你服务器的防火墙。

  1. 进来后的也买你如下:
  1. 按照他的要求去找到密码即可,因为启动的时候,我已经把这个数据文件夹挂载出来了,所以直接到数据卷中查找即可。
shell 复制代码
# 查看所有数据卷
docker volume ls

找到Jenkins数据的数据卷:

查看数据卷的地址,进入找到对应的密码:

shell 复制代码
 # 查看数据卷的信息
 docker volume inspect jenkins_jenkins-data

这是我查看密码的步骤:

  1. 复制你的密码到浏览器的Jenkins中,进行下一步
  2. 安装推荐的插件

安装完成之后,创建你的账号即可:

至此你的Jenkins就安装好了,至于具体的配置本篇文章就不在赘述了:

5. 遇到的BUG

5.1 Maven依赖下载权限不足

在构建项目的时候需要下载maven依赖,会出现如下的问题:

这个问题是由于你设置的maven本地仓库的权限问题。容器内部的权限等级没有这么高,而你如果是管理员创建的仓库文件夹,就会导致 容器内部下载的依赖无法写入导致问题。

解决方案:直接在你的宿主机,设置本地仓库的权限,让其他人员也能写入即可。

5.2 构建Docker镜像权限不足

使用DockerFile构建你的项目镜像的时候,报错提示:

类似这种就是你的Jenkins容器中的Docker权限不足,因为之前的Docker是挂载进去的,容器呢不没有这么高的权限导致无法构建项目。

解决方案:在你的宿主机内,设置docker.socket的权限。

shell 复制代码
chmod -R 777 /var/run/docker.sock

设置完再去运行你的流水线。

相关推荐
ONLYOFFICE几秒前
入门指南:远程运行 ONLYOFFICE 协作空间 MCP 服务器
运维·服务器·github·onlyoffice
pyniu1 分钟前
Spring Boot车辆管理系统实战开发
java·spring boot·后端
虾说羊2 分钟前
ssm项目本地部署
java·tomcat
资生算法程序员_畅想家_剑魔2 分钟前
Kotlin常见技术分享-01-相对于Java 的核心优势-空安全
java·安全·kotlin
qq_398586546 分钟前
Debian12远程方案xrdp、kasmvnc、novnc
linux·debian·rdp·novnc·kasmvnc
Dovis(誓平步青云)7 分钟前
《Linux 核心 IO 模型深析(中篇):探索Cmake与多路转接的高效实现poll》
linux·运维·服务器·数据库·csdn成长记录
gelald9 分钟前
AQS 解析:从原理到实战
java·后端
2301_780669869 分钟前
集合框架(Collection单列集合(常用功能,三种遍历方式及通过并发修改异常认识他们的区别)、Map双列集合)
java
进阶小白猿10 分钟前
Java技术八股学习Day14
java·数据库·学习