一、启动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 给容器起一个别名

1.3 查看容器状态

     docker ps -l    显示最后一个运行的容器(无论该容器目前处于什么状态)

     docker ps --no-trunc   不对输出进行截断操作,此时可以看到完整的COMMAND,CONTAINER ID

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

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

   vim  hudson.model.UpdateCenter.xml   

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

二、配置 

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

 

 

版本是 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的客户端,我这里是直接配置的,如下图

三、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 在线安装需要 甲骨文的账号。

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

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

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

 在这里正在指定位置下载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   

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐