Skip to content

实战-Docker方式安装Jenkins-20230319-测试成功-荐

Day2-实战:Docker方式安装Jenkins-2023.3.19(测试成功)-荐

image-20230319112028407

目录

[toc]

实验环境

bash
win10笔记本1台虚机centos7.61810vmworkstationjenkins/jenkins:2.346.3-2-lts-jdk11docker20.10.211台linux虚机(Jenkins用docker启动,agent直接跑在宿主机上。)

实验软件(无)

前置条件

  • docker环境已安装(本次版本:20.10.21)

  • 安装好jdk11

Jenkins是由Java语言开发的,运行需要提前安装好JDK。注意最新版本之后不在兼容JDK8而是需要JDK11+版本

Jenkins Server和Agent的运行都需要依赖JDK;(Jenkins是docker安装的,其环境里自带了java,但是jenkins agent环境也是需要安装jdk的,因此这里的测试虚机就需要安装jdk11了。)

image-20230319112001050

1、安装Jenkins Server

0.安装jdk环境

⚠️ 我的测试环境,是在一台虚机上跑了一个jenkins容器。但后面添加一个jenkins agent时,是将这个虚机作为其agent使用,因此这个虚机也要安装java环境的!!!

不管你是jenkins master节点,还是agent节点,都是需要jdk环境的!

bash
#安装[root@Devops6 ~]#yum install -y java-11-openjdk.x86_64……Installed:java-11-openjdk.x86_641:11.0.18.0.10-1.el7_9DependencyInstalled:copy-jdk-configs.noarch0:3.3-11.el7_9cups-libs.x86_641:1.6.3-51.el7dejavu-fonts-common.noarch0:2.33-6.el7dejavu-sans-fonts.noarch0:2.33-6.el7fontconfig.x86_640:2.13.0-4.3.el7fontpackages-filesystem.noarch0:1.44-8.el7giflib.x86_640:4.1.6-9.el7graphite2.x86_640:1.3.10-1.el7_3harfbuzz.x86_640:1.7.5-2.el7java-11-openjdk-headless.x86_641:11.0.18.0.10-1.el7_9javapackages-tools.noarch0:3.4.1-11.el7libICE.x86_640:1.0.9-9.el7libSM.x86_640:1.2.2-2.el7libX11.x86_640:1.6.7-4.el7_9libX11-common.noarch0:1.6.7-4.el7_9libXau.x86_640:1.0.8-2.1.el7libXext.x86_640:1.3.3-3.el7libXi.x86_640:1.7.9-1.el7libXrender.x86_640:0.9.10-1.el7libXtst.x86_640:1.2.3-1.el7libfontenc.x86_640:1.1.3-3.el7libjpeg-turbo.x86_640:1.2.90-8.el7libxcb.x86_640:1.13-1.el7lksctp-tools.x86_640:1.0.17-2.el7pcsc-lite-libs.x86_640:1.8.8-8.el7python-javapackages.noarch0:3.4.1-11.el7python-lxml.x86_640:3.2.1-4.el7ttmkfdir.x86_640:3.0.9-42.el7tzdata-java.noarch0:2022g-1.el7xorg-x11-font-utils.x86_641:7.5-21.el7xorg-x11-fonts-Type1.noarch0:7.5-9.el7Complete!#验证[root@Devops6 ~]#java --versionopenjdk11.0.182023-01-17LTSOpenJDKRuntimeEnvironment(Red_Hat-11.0.18.0.10-1.el7_9) (build11.0.18+10-LTS)OpenJDK64-BitServerVM(Red_Hat-11.0.18.0.10-1.el7_9) (build11.0.18+10-LTS,mixedmode,sharing)

1.docker拉取jenkins镜像并启动容器

  • 下载jenkins镜像

安装Jenkins的Server节点,Server节点作为主控节点负责调度任务。

进入hub.docker.com官方的镜像仓库,下载Jenkins的镜像。

在dockerhub里搜索jenkins/jenkins,点击tag,搜索jdk11,然后选择jenkins:2.346.3-2-lts-jdk11即可:

https:dockerpulljenkins/jenkins:2.346.3-2-lts-jdk11

DockerHUB上面有很多版本的镜像,大家根据镜像的更新时间,别找错了🌝🌝好多是4年前的…

我们使用最新LTS版本的Jenkins 2.346.3

1、宿主机上创建Jenkins数据目录

准备一个用于存储Jenkins数据的目录。因为我们用Docker安装的,容器的数据如果没有进行持久化当容器被删除了会出现数据丢失。

我们需要把Jenkins数据目录持久化,先去创建一个本地的目录并赋予权限。

2、启动Jenkins容器

说明:

容器运行后需要开放端口。

8080默认Jenkins web页面使用的端口。

50000是Agent连接Server用到的通信端口。(后面安装JenkinsAgent的时候要注意网络连通性)

时区配置,定义默认的时区。(JAVA_OPTS环境变量为修改时间配置,否则可能jenkins的时间显示有问题!)

持久化数据目录,挂载本地的数据目录。

3、验证

启动Jenkins容器后。然后docker logs 看下日志。在日志中可以获取到激活Jenkins需要用到的密钥字符串。保存下来。

2.访问web界面并输入密码

访问http:[root@Devops6 ~]#docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword315798fcf926460fb1da173032767596(2)查看jenkins容器日志[root@Devops6 ~]#docker logs jenkins……Jenkinsinitialsetupisrequired.Anadminuserhasbeencreatedandapasswordgenerated.Pleaseusethefollowingpasswordtoproceedtoinstallation:315798fcf926460fb1da173032767596Thismayalsobefoundat:/var/jenkins_home/secrets/initialAdminPassword……

image-20220414161955864

image-20220414162029581

加载完成后,出现如下界面:

image-20220414162050826

3.自定义安装插件

  • 点击选择插件来安装

image-20220414162245963

点击,我们先不安装插件,待后续根据需求再安装相应的插件即可:

image-20230319183253533

  • 插件安装完成后,出现如下界面:

image-20220414162714531

  • 自定义安装插件,这里取消安装推荐的插件。只选择语言插件进行安装(本次也不打算安装汉化插件,直接使用jenkins的英文界面了)。(此处不应安装太多的插件,可能会出现网络原因导致安装失败。我们先安装好Jenkins后面用到哪些插件的时候再选择性的安装好)

image-20230319183913142

安装进度也可以通过docker logs查询日志获取。

4.创建一个管理员用户

  • 账户:admin 密码:admin ,输入完成后,点击保存并完成

image-20230319183430336

  • 点击保存并完成

image-20230319183447996

  • 点击开始使用jenkins

image-20230319183502703

这里就进入到了jenkins的主界面:

image-20230319183517057

5、配置Jenkins插件源

1.本次新版本的插件源好像是不用变的

当前jenkins版本:jenkins/jenkins:2.346.3-2-lts-jdk11

  • Jenkins插件源配置地方

image-20230319184250699

image-20230319184312192

image-20230319184718598

https:java-jaragent.jar-jnlpUrlhttp:[root@Devops6 devops6]#lsjenkins_home[root@Devops6 devops6]#mkdir jenkins_agent[root@Devops6 devops6]#cd jenkins_agent/[root@Devops6 jenkins_agent]#wget http:--2023-03-1922:37:29--http:Connectingto172.29.9.101:8080...connected.HTTPrequestsent,awaitingresponse...200OKLength:1522481(1.5M) [application/java-archive]Savingto:‘agent.jar’100%[================================================================================================================================================================>]1,522,481--.-K/sin0.04s2023-03-1922:37:29(38.6 MB/s) - ‘agent.jar’ saved [1522481/1522481][root@Devops6 jenkins_agent]#lltotal1488-rw-r--r--1rootroot1522481Mar1918:27agent.jar

bash
[root@Devops6 jenkins_agent]#pwd/data/devops6/jenkins_agent[root@Devops6 jenkins_agent]#echo 0af95ad221aa67897c9cb50ebc57bee4c1cb49e7f8bb42fb65b835cabcae2303 >secret-file[root@Devops6 jenkins_agent]#vim start.sh #将刚才网页出现的第二种方式的代码拷贝进去#!/bin/bashjava-jaragent.jar-jnlpUrlhttp:/data/devops6/jenkins_agent[root@Devops6 jenkins_agent]#lsagent.jarstart.sh[root@Devops6 jenkins_agent]#sh start.sh Mar19,202310:39:45PMorg.jenkinsci.remoting.engine.WorkDirManagerinitializeWorkDirINFO:Using/opt/jenkinsagent/remotingasaremotingworkdirectoryMar19,202310:39:45PMorg.jenkinsci.remoting.engine.WorkDirManagersetupLoggingINFO:Botherrorandoutputlogswillbeprintedto/opt/jenkinsagent/remotingMar19,202310:39:45PMhudson.remoting.jnlp.MaincreateEngineINFO:Settingupagent:build01Mar19,202310:39:45PMhudson.remoting.jnlp.Main$CuiListener <init>INFO:Jenkinsagentisrunninginheadlessmode.Mar19,202310:39:45PMhudson.remoting.EnginestartEngineINFO:UsingRemotingversion:4.13.3Mar19,202310:39:45PMorg.jenkinsci.remoting.engine.WorkDirManagerinitializeWorkDirINFO:Using/opt/jenkinsagent/remotingasaremotingworkdirectoryMar19,202310:39:45PMhudson.remoting.jnlp.Main$CuiListener statusINFO:Locatingserveramong[http:Mar19,202310:39:46PMorg.jenkinsci.remoting.engine.JnlpAgentEndpointResolverresolveINFO:Remotingserveracceptsthefollowingprotocols:[JNLP4-connect,Ping]Mar19,202310:39:46PMhudson.remoting.jnlp.Main$CuiListener statusINFO:AgentdiscoverysuccessfulAgentaddress:172.29.9.101Agentport:50000#注意这里Identity:3a:67:65:d5:5b:d8:e5:f4:fa:4b:1a:9c:93:d9:36:0dMar19,202310:39:46PMhudson.remoting.jnlp.Main$CuiListener statusINFO:HandshakingMar19,202310:39:46PMhudson.remoting.jnlp.Main$CuiListener statusINFO:Connectingto172.29.9.101:50000Mar19,202310:39:46PMhudson.remoting.jnlp.Main$CuiListener statusINFO:Tryingprotocol:JNLP4-connectMar19,202310:39:46PMorg.jenkinsci.remoting.protocol.impl.BIONetworkLayer$Reader runINFO:WaitingforProtocolStacktostart.Mar19,202310:39:46PMhudson.remoting.jnlp.Main$CuiListener statusINFO:Remoteidentityconfirmed:3a:67:65:d5:5b:d8:e5:f4:fa:4b:1a:9c:93:d9:36:0dMar19,202310:39:46PMhudson.remoting.jnlp.Main$CuiListener statusINFO:Connected#注意这里

image-20230319224053860

image-20230319224115043

image-20230319224130682

image-20230319225510805

⚠️ 注意:如果使用rc.local和crontab设置开机启动的话,是没有效果的;这里采用systemd方法来设置服务开机启动。

image-20230320123958784

重启机器后测试:(符合预期)

image-20230320124059964

image-20230320124123814

也是可以通过sytemctl命令来启动/重启/关停这个服务的:

至此,jenkins server节点和agent节点已全部安装成功。

image-20230320125004206

测试结束。😘

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码 x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号 《云原生架构师实战》

image-20230107215126971

🍀 语雀

https:

版权:此文章版权归 One 所有,如有转载,请注明出处!

链接:可点击右上角分享此页面复制文章链接

上次更新时间:

最近更新