目录
1. 搜索Jenkins镜像
2. 拉取镜像
4. 创建并启动Jenkins
5. 查看启动情况
1. 查看运行情况
2. 查看启动日志
6. 配置国内镜像
1. 修改 hudson.model.UpdateCenter.xml 配置文件中的 url 地址
3. 安装Docker客户端
4. 安装maven
5. 重启Jenkins
2. 安装插件
3. 进入Jenkins编辑
-
搜索Jenkins镜像
[root@localhost ~]# docker search jenkins NAME DESCRIPTION STARS OFFICIAL AUTOMATED jenkins DEPRECATED; use "jenkins/jenkins:lts" instead 5505 [OK] jenkins/jenkins The leading open source automation server 3087 jenkins/jnlp-slave a Jenkins agent which can connect to Jenkins¡ 150 [OK] jenkins/inbound-agent 65 bitnami/jenkins Bitnami Docker Image for Jenkins 53 [OK] jenkins/slave base image for a Jenkins Agent, which includ¡ 48 [OK] jenkins/agent 41 jenkins/ssh-slave A Jenkins slave using SSH to establish conne¡ 38 [OK] jenkins/ssh-agent Docker image for Jenkins agents connected ov¡ 24 jenkins/jnlp-agent-docker 8 jenkins/jnlp-agent-maven A JNLP-based agent with Maven 3 built in 7 jenkins/pct Plugin Compat Tester 5 [OK] jenkins/evergreen An automatically self-updating Jenkins distr¡ 5 jenkins/jenkins-experimental Experimental images of Jenkins. These images¡ 3 [OK] jenkins/jnlp-agent-python A JNLP-based agent with Python built in 3 jenkins/jnlp-agent-alpine 2 jenkins/ath Jenkins Acceptance Test Harness 1 [OK] jenkins/jenkinsfile-runner Jenkinsfile Runner packages 1 rancher/jenkins-jenkins 1 jenkins/jnlp-agent-node 1 jenkins/core-pr-tester Docker image for testing pull-requests sent ¡ 1 jenkins/jnlp-agent-ruby 1 rancher/jenkins-master Jenkins Server 1 [OK] rancher/jenkins-slave Jenkins Build Slave 0 [OK] rancher/jenkins-jnlp-slave 0
-
拉取镜像
因为第一个镜像已经废弃, 所以选择第二个镜像[root@localhost ~]# docker pull jenkins/jenkins Using default tag: latest latest: Pulling from jenkins/jenkins 0e29546d541c: Pull complete 11bbb8c402a7: Pull complete cf91f018150b: Pull complete a98e88c6f0f0: Pull complete f67fc70d671a: Pull complete edbe48067464: Pull complete fa23ca93dd6b: Pull complete 00159d993c13: Pull complete f28fb40a17cf: Pull complete 071d309df04b: Pull complete 78599f36e494: Pull complete 896a32d969fb: Pull complete 3f1a51ea9f7f: Pull complete 26e724f0bfad: Pull complete b377e1ae1384: Pull complete d3cdbe7e8b9f: Pull complete f3b40ebc3458: Pull complete Digest: sha256:c3fa8e7f70d1e873ea6aa87040c557aa53e6707eb1d5ecace7f6884a87588ac8 Status: Downloaded newer image for jenkins/jenkins:latest docker.io/jenkins/jenkins:latest
-
创建 Jenkins 挂载目录
[root@localhost ~]# mkdir -p /usr/local/jenkins [root@localhost ~]# chmod 777 /usr/local/jenkins
-
创建并启动Jenkins
-d:后台运行容器; -p 8080:8080:将容器的 8080 端口映射到服务器的 8080 端口; -p 50000:50000:将容器的 50000 端口映射到服务器的 50000 端口; -v /data/jenkins:/var/jenkins_home:将容器中 Jenkins 的工作目录挂载到服务器的 /usr/local/jenkins; -v /etc/localtime:/etc/localtime:让容器使用和服务器同样的时间设置; -v /var/run/docker.sock:/var/run/docker.sock:将Docker套接字挂载到容器; -v /data/java:/data/java:挂载java -v /data/maven:/data/maven :挂载maven --restart=always:设置容器的重启策略为 Docker 重启时自动重启; --name=jenkins:给容器起别名;
[root@localhost ~]# docker run -d \ -p 8080:8080 \ -p 50000:50000 \ -v /data/jenkins:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /etc/localtime:/etc/localtime \ -v /data/java:/data/java \ -v /data/maven:/data/maven \ --restart=always \ --name=jenkins \ jenkins/jenkins d24e3cb0cd6437025a11e2aa18c4fe273fe6ccff3f4922ab2b088934144f33d6
-
查看启动情况
-
查看运行情况
[root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d24e3cb0cd64 jenkins/jenkins "/usr/bin/tini -- /u…" 34 minutes ago Up 34 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp jenkins
-
查看启动日志
[root@localhost ~]# docker logs jenkins Running from: /usr/share/jenkins/jenkins.war webroot: EnvVars.masterEnvVars.get("JENKINS_HOME") 2022-07-15 03:13:16.818+0000 [id=1] INFO org.eclipse.jetty.util.log.Log#initialized: Logging initialized @455ms to org.eclipse.jetty.util.log.JavaUtilLog 2022-07-15 03:13:16.897+0000 [id=1] INFO winstone.Logger#logInternal: Beginning extraction from war file 2022-07-15 03:13:17.913+0000 [id=1] WARNING o.e.j.s.handler.ContextHandler#setContextPath: Empty contextPath 2022-07-15 03:13:17.981+0000 [id=1] INFO org.eclipse.jetty.server.Server#doStart: jetty-9.4.46.v20220331; built: 2022-03-31T16:38:08.030Z; git: bc17a0369a11ecf40bb92c839b9ef0a8ac50ea18; jvm 11.0.15+10 2022-07-15 03:13:18.301+0000 [id=1] INFO o.e.j.w.StandardDescriptorProcessor#visitServlet: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet 2022-07-15 03:13:18.356+0000 [id=1] INFO o.e.j.s.s.DefaultSessionIdManager#doStart: DefaultSessionIdManager workerName=node0 2022-07-15 03:13:18.356+0000 [id=1] INFO o.e.j.s.s.DefaultSessionIdManager#doStart: No SessionScavenger set, using defaults 2022-07-15 03:13:18.357+0000 [id=1] INFO o.e.j.server.session.HouseKeeper#startScavenging: node0 Scavenging every 600000ms 2022-07-15 03:13:18.958+0000 [id=1] INFO hudson.WebAppMain#contextInitialized: Jenkins home directory: /var/jenkins_home found at: EnvVars.masterEnvVars.get("JENKINS_HOME") 2022-07-15 03:13:19.270+0000 [id=1] INFO o.e.j.s.handler.ContextHandler#doStart: Started w.@440eaa07{Jenkins v2.359,/,file:///var/jenkins_home/war/,AVAILABLE}{/var/jenkins_home/war} 2022-07-15 03:13:19.302+0000 [id=1] INFO o.e.j.server.AbstractConnector#doStart: Started ServerConnector@1d730606{HTTP/1.1, (http/1.1)}{0.0.0.0:8080} 2022-07-15 03:13:19.302+0000 [id=1] INFO org.eclipse.jetty.server.Server#doStart: Started @2940ms 2022-07-15 03:13:19.308+0000 [id=23] INFO winstone.Logger#logInternal: Winstone Servlet Engine running: controlPort=disabled 2022-07-15 03:13:19.655+0000 [id=30] INFO jenkins.InitReactorRunner$1#onAttained: Started initialization 2022-07-15 03:13:19.686+0000 [id=30] INFO jenkins.InitReactorRunner$1#onAttained: Listed all plugins 2022-07-15 03:13:20.769+0000 [id=29] INFO jenkins.InitReactorRunner$1#onAttained: Prepared all plugins 2022-07-15 03:13:20.773+0000 [id=29] INFO jenkins.InitReactorRunner$1#onAttained: Started all plugins 2022-07-15 03:13:20.832+0000 [id=31] INFO jenkins.InitReactorRunner$1#onAttained: Augmented all extensions 2022-07-15 03:13:21.133+0000 [id=31] INFO jenkins.InitReactorRunner$1#onAttained: System config loaded 2022-07-15 03:13:21.133+0000 [id=31] INFO jenkins.InitReactorRunner$1#onAttained: System config adapted 2022-07-15 03:13:21.133+0000 [id=31] INFO jenkins.InitReactorRunner$1#onAttained: Loaded all jobs 2022-07-15 03:13:21.138+0000 [id=31] INFO jenkins.InitReactorRunner$1#onAttained: Configuration for all jobs updated 2022-07-15 03:13:21.204+0000 [id=44] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$1: Started Download metadata 2022-07-15 03:13:21.226+0000 [id=44] INFO hudson.util.Retrier#start: Attempt #1 to do the action check updates server WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.codehaus.groovy.vmplugin.v7.Java7$1 (file:/var/jenkins_home/war/WEB-INF/lib/groovy-all-2.4.21.jar) to constructor java.lang.invoke.MethodHandles$Lookup(java.lang.Class,int) WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.vmplugin.v7.Java7$1 WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release 2022-07-15 03:13:21.747+0000 [id=29] INFO jenkins.install.SetupWizard#init: ************************************************************* ************************************************************* ************************************************************* Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: d212b8cf9f694cf2b73aaf645571e745 This may also be found at: /var/jenkins_home/secrets/initialAdminPassword ************************************************************* ************************************************************* ************************************************************* 2022-07-15 03:15:52.532+0000 [id=29] INFO jenkins.InitReactorRunner$1#onAttained: Completed initialization 2022-07-15 03:15:52.549+0000 [id=22] INFO hudson.lifecycle.Lifecycle#onReady: Jenkins is fully up and running 2022-07-15 03:16:19.960+0000 [id=44] INFO h.m.DownloadService$Downloadable#load: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller 2022-07-15 03:16:19.960+0000 [id=44] INFO hudson.util.Retrier#start: Performed the action check updates server successfully at the attempt #1 2022-07-15 03:16:19.962+0000 [id=44] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$1: Finished Download metadata. 178,741 ms 2022-07-15 03:35:12.464+0000 [id=63] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$1: Started Periodic background build discarder 2022-07-15 03:35:12.465+0000 [id=63] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$1: Finished Periodic background build discarder. 0 ms
-
-
配置国内镜像
-
修改 hudson.model.UpdateCenter.xml 配置文件中的 url 地址
- 从容器拷贝到宿主机并编辑 hudson.model.UpdateCenter.xml 文件
[root@localhost ~]# docker cp jenkins:/var/jenkins_home/hudson.model.UpdateCenter.xml /hudson.model.UpdateCenter.xml [root@localhost ~]# vi /hudson.model.UpdateCenter.xml
<?xml version='1.1' encoding='UTF-8'?> <sites> <site> <id>default</id> <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url> </site> </sites>
- 从宿主机拷贝到容器
[root@localhost ~]# docker cp /hudson.model.UpdateCenter.xml jenkins:/var/jenkins_home/hudson.model.UpdateCenter.xml
- 从容器拷贝到宿主机并编辑 hudson.model.UpdateCenter.xml 文件
-
修改
Jenkins
插件下载地址进入容器并设置镜像地址
[root@localhost ~]# docker exec -it jenkins bash jenkins@d24e3cb0cd64:/$ cd /var/jenkins_home/updates/ jenkins@d24e3cb0cd64:~/updates$ sed -i 's#https://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json jenkins@d24e3cb0cd64:~/updates$ sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json
国内常用的镜像地址 来源 地址 huawei https://mirrors.huaweicloud.com/jenkins/ tsinghua https://mirrors.tuna.tsinghua.edu.cn/jenkins/ tencent https://mirrors.cloud.tencent.com/jenkins/ ustc https://mirrors.ustc.edu.cn/jenkins/ bit http://mirror.bit.edu.cn/jenkins/ -
安装Docker客户端
apt-get update apt-get install -y docker.io
-
安装maven
apt-get install -y maven
-
重启Jenkins
jenkins@d24e3cb0cd64:~/updates$ exit exit [root@localhost ~]# docker restart jenkins jenkins
-
-
访问并初始化Jenkins
-
IP + 容器所映射到服务器上的8080端口
管理员的初始密码在 Jenkins 的工作目录下:/var/jenkins_home/secrets/initialAdminPassword
,可以进容器内部去查看,也可以在宿主机的挂载目录下查看[root@localhost ~]# cat /usr/local/jenkins/secrets/initialAdminPassword d212b8cf9f694cf2b73aaf645571e745
-
安装插件
安装推荐的插件即可 -
进入Jenkins
-