一、启动docker,下载Jenkins镜像文件

1.1这个镜像比较新

docker pull jenkins/jenkins

1.2创建容器,需要两个端口web 和 5000(不知道有什么用) 

docker run -d -p 7777:8080 -p 7778:50000 -v /mnt/docker/workspace/jenkins/jenkinsConfig:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins jenkins/jenkins 

-d 后台运行镜像

  -p 7777:8080 将镜像的8080端口映射到服务器的7777端口。

  -p 7778:50000 将镜像的50000端口映射到服务器的7778端口

  -v /mnt/docker/workspace/jenkins/jenkinsConfig:/var/jenkins_mount /var/jenkins_home目录为容器jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录。这里我们设置的就是上面我们创建的  jenkinsConfig 目录

  -v /etc/localtime:/etc/localtime 让容器使用和服务器同样的时间设置。

  --name jenkins 给容器起一个别名

docker jenkins部署springboot项目 docker搭建jenkins_jenkins

1.3 查看容器状态

docker ps -l

docker ps --no-trunc 

1.4 配置镜像加速,进入 cd /var/jenkins_mount/ 目录。

/mnt/docker/workspace/jenkins/jenkinsConfig  #挂载到了本地的位置 

vim  hudson.model.UpdateCenter.xml

 将URL备份一个,并新增一个清华大学官方镜像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

docker jenkins部署springboot项目 docker搭建jenkins_java_02

二、配置 

直接访问7777端口即可,第一次访问密码在   secrets/initialAdminPassword 文件

docker jenkins部署springboot项目 docker搭建jenkins_服务器_03

docker jenkins部署springboot项目 docker搭建jenkins_java_04

 

docker jenkins部署springboot项目 docker搭建jenkins_docker_05

docker jenkins部署springboot项目 docker搭建jenkins_java_06

 

docker jenkins部署springboot项目 docker搭建jenkins_docker_07

版本是 2.357 和原来的不太一样了,jdk版本为  openjdk version "11.0.15" 2022-04-19

 安装三个要用的插件  Git  、 Maven  、  Deploy to container 安装成功后使用命令 docker restart jenkins 重启容器

git:这里说下关于插件的问题,第一个git 安装完插件就可以直接使用了,不用在单独下载git客户端了

Deploy to container:部署tomcat用的,不用下载什么,需要在tomcat中配置用户信息

maven:这里需要说一下,需要配置或者独立下载maven的客户端,我这里是直接配置的,如下图

docker jenkins部署springboot项目 docker搭建jenkins_java_08

三、ssh免密登录(以下操作去jenkins容器中操作)

ssh-keygen -t rsa

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.192.192.192

ssh root@192.192.192.192

四、关于JDK版本问题

 因为jenkins默认的是jdk11,jdk8下开发的代码,编译报错,所以这里安装一个jdk8的版本

3.1 在线安装需要 甲骨文的账号。

docker jenkins部署springboot项目 docker搭建jenkins_java_09

docker jenkins部署springboot项目 docker搭建jenkins_jenkins_10

 在编译项目的时候 就会自动下载jdk8了

但是发现编译项目虽然能成功,发现报错,怀疑是不是jdk小版本的问题呢?

docker jenkins部署springboot项目 docker搭建jenkins_jenkins_11

 3.2 在线安装的jdk8小版本比较旧,怀疑是这个报错的问题,所以上传指定的jdk版本

docker jenkins部署springboot项目 docker搭建jenkins_docker_12

docker jenkins部署springboot项目 docker搭建jenkins_jenkins_13

 在这里正在指定位置下载jdk版本。

最后发现同样报这个错

Jul 07, 2022 2:54:50 AM hudson.remoting.UserRequest perform
WARNING: LinkageError while performing UserRequest:hudson.maven.AbstractMavenProcessFactory$ConfigureOriginalJDK@ea31114
java.lang.UnsupportedClassVersionError: Failed to load hudson.maven.AbstractMavenProcessFactory$ConfigureOriginalJDK
	at hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:460)
	at hudson.remoting.RemoteClassLoader.loadRemoteClass(RemoteClassLoader.java:292)
	at hudson.remoting.RemoteClassLoader.loadWithMultiClassLoader(RemoteClassLoader.java:269)
	at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:228)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:348)
	at hudson.remoting.MultiClassLoaderSerializer$Input.resolveClass(MultiClassLoaderSerializer.java:132)
	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1924)
	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1807)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2098)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1624)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:464)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:422)
	at hudson.remoting.UserRequest.deserialize(UserRequest.java:289)
	at hudson.remoting.UserRequest.perform(UserRequest.java:189)
	at hudson.remoting.UserRequest.perform(UserRequest.java:54)
	at hudson.remoting.Request$2.run(Request.java:376)
	at hudson.remoting.InterceptingExecutorService.lambda$wrap$0(InterceptingExecutorService.java:78)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.UnsupportedClassVersionError: Failed to load jenkins.security.MasterToSlaveCallable
	at hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:460)
	at hudson.remoting.RemoteClassLoader.loadRemoteClass(RemoteClassLoader.java:300)
	at hudson.remoting.RemoteClassLoader.loadWithMultiClassLoader(RemoteClassLoader.java:269)
	at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:228)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:635)
	at hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:458)
	... 23 more
Caused by: java.lang.UnsupportedClassVersionError: jenkins/security/MasterToSlaveCallable has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:635)
	at hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:458)
	... 32 more

最后这个问题还是没有解决,看来是除非使用jdk11的版本可以用了,最后没办法,乖乖的重新拉取低版本的镜像吧。

docker pull jenkins/jenkins:latest-jdk8