[部署] Docker 安装Jenkins

目录

1. 搜索Jenkins镜像

2. 拉取镜像

3. 创建 Jenkins 挂载目录

4. 创建并启动Jenkins

5. 查看启动情况

1. 查看运行情况

2. 查看启动日志

6. 配置国内镜像

1. 修改 hudson.model.UpdateCenter.xml 配置文件中的 url 地址

2. 修改Jenkins 插件下载地址

3. 安装Docker客户端

4. 安装maven

5. 重启Jenkins

7. 访问并初始化Jenkins

1. IP + 容器所映射到服务器上的8080端口​编辑

2. 安装插件

3. 进入Jenkins​编辑


  1. 搜索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                    
  2. 拉取镜像

    因为第一个镜像已经废弃, 所以选择第二个镜像
    [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
  3. 创建 Jenkins 挂载目录

    [root@localhost ~]# mkdir -p /usr/local/jenkins
    [root@localhost ~]# chmod 777 /usr/local/jenkins
  4. 创建并启动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
  5. 查看启动情况

    1. 查看运行情况

      [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
    2. 查看启动日志

      [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
  6. 配置国内镜像

    1. 修改 hudson.model.UpdateCenter.xml 配置文件中的 url 地址

      1. 从容器拷贝到宿主机并编辑 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>
      2. 从宿主机拷贝到容器
        [root@localhost ~]# docker cp /hudson.model.UpdateCenter.xml jenkins:/var/jenkins_home/hudson.model.UpdateCenter.xml
    2. 修改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
      国内常用的镜像地址
      来源地址
      huaweihttps://mirrors.huaweicloud.com/jenkins/
      tsinghuahttps://mirrors.tuna.tsinghua.edu.cn/jenkins/
      tencenthttps://mirrors.cloud.tencent.com/jenkins/
      ustchttps://mirrors.ustc.edu.cn/jenkins/
      bithttp://mirror.bit.edu.cn/jenkins/
    3. 安装Docker客户端

      apt-get update
      apt-get install -y docker.io
    4. 安装maven

      apt-get install -y maven
    5. 重启Jenkins

      jenkins@d24e3cb0cd64:~/updates$ exit
      exit
      [root@localhost ~]# docker restart jenkins
      jenkins
  7. 访问并初始化Jenkins

    1. IP + 容器所映射到服务器上的8080端口

      管理员的初始密码在 Jenkins 的工作目录下:/var/jenkins_home/secrets/initialAdminPassword,可以进容器内部去查看,也可以在宿主机的挂载目录下查看
      [root@localhost ~]# cat /usr/local/jenkins/secrets/initialAdminPassword
      d212b8cf9f694cf2b73aaf645571e745
    2. 安装插件

       安装推荐的插件即可
    3. 进入Jenkins

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值