一、启动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
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
二、配置
直接访问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