docker 部署jenkins

===============================================

 2020/11/25_第2次修改                       ccb_warlock

 

更新说明:

2020/11/25:

1.增加了离线安装jenkins插件的操作步骤;

===============================================

上周准备给团队内部培训docker的内容,配合讲解应用构建了基于jenkins的持续发布的方案,这里我将部署、配置拆成了2块,首先记录部署。

 


一、部署docker

docker参考:https://www.cnblogs.com/straycats/p/10680502.html

swarm参考:https://www.cnblogs.com/straycats/p/8978135.html

 


二、部署jenkins容器

2.1 创建目录

mkdir -p /opt/compose/jenkins
mkdir -p /opt/vol/jenkins/jenkins_home

2.2 创建网络

# 本地用的network

docker network create 
  --driver=bridge 
  --subnet=172.11.0.0/16 
  --ip-range=172.11.0.0/16 
  --gateway=172.11.0.1 
  --attachable 
  local-net

# swarm用的network

docker network create 
  --driver=overlay 
  --subnet=172.12.0.0/16 
  --ip-range=172.12.0.0/16 
  --gateway=172.12.0.1 
  --attachable 
  swarm-net

2.3 创建容器

目前docker hub上维护的项目是 jenkins/jenkins ,jenkins已经弃用。

2.3.1 run方式

docker run -d 
  --name jenkins 
  -v /opt/vol/jenkins/jenkins_home:/var/jenkins_home 
  -p 8080:8080 
  --network local-net 
  --cpus 2 
  --memory 2G 
  --restart on-failure 
  jenkins/jenkins:2.266

PS.如果需要移除该容器,可以使用命令

docker stop jenkins
docker rm jenkins

2.3.2 compose方式

# 编辑docker-compose.yml

vi /opt/compose/jenkins/docker-compose.yml

将下面的内容添加到docker-compose.yml内。

version: '2'
services:

  redis:
    image: jenkins/jenkins:2.266
    volumes:
      - /opt/vol/jenkins/jenkins_home:/var/jenkins_home
    ports:
      - 8080:8080
    networks:
      - local-net

networks:
  local-net:
    external: true

# 创建容器

cd /opt/compose/jenkins
docker-compose up -d

PS.如果需要移除该compose文件创建的所有容器,可以使用命令

cd /opt/compose/jenkins
docker-compose down

2.3.3 stack方式

# 编辑jenkins-stack.yml

vi /opt/compose/jenkins/jenkins-stack.yml

将下面的内容添加到jenkins-stack.yml内。

version: '3.7'
services:

  jenkins:
    image: jenkins/jenkins:2.266
    volumes:
      - /opt/vol/jenkins/jenkins_home:/var/jenkins_home
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure # any
      resources:
        limits:
          cpus: "2"
          memory: 2048M
      update_config:
        parallelism: 1
        delay: 5s
        max_failure_ratio: 0.1
        order: start-first
    ports:
      - 8080:8080
    networks:
      - swarm-net

networks:
  swarm-net:
    external: true

# 创建栈

cd /opt/compose/jenkins
docker stack deploy -c jenkins-stack.yml jenkins-stack

三、初始化jenkins

3.1 验证

在创建新的容器之后,需要到容器的目录“/var/jenkins_home/secrets/initialAdminPassword”(这里配置的宿主机目录“/opt/vol/jenkins/jenkins_home/secrets/initialAdminPassword”)内获取初始的登录密码。

填入初始密码,点击“继续”。

3.2 安装插件

3.2.1 在线安装

这里选择“安装推荐的插件”(如果你知道自己需要什么,可以选择自定义安装插件)

接着等待插件安装完成。

3.2.2 离线安装(在线安装成功,则跳过该步骤)

部署教程是前段时间整理的,当时通过在线安装插件的功能是正常的。但是上周我搭建环境时发现安装插件时提示

java.io.IOException: Downloaded file /var/jenkins_home/plugins/trilead-api.jpi.tmp does not match expected SHA-256, expected 'aRsCZA5PqYAxMhX6G+AXjA7yZArlzU0+MCEUEo1oVd8=', actual '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='
at hudson.model.UpdateCenter.throwVerificationFailure(UpdateCenter.java:2019)
at hudson.model.UpdateCenter.verifyChecksums(UpdateCenter.java:2054)
at hudson.model.UpdateCenter$InstallationJob.replace(UpdateCenter.java:2233)
at hudson.model.UpdateCenter$UpdateCenterConfiguration.install(UpdateCenter.java:1343)
at hudson.model.UpdateCenter$DownloadJob._run(UpdateCenter.java:1872)
at hudson.model.UpdateCenter$InstallationJob._run(UpdateCenter.java:2147)
at hudson.model.UpdateCenter$DownloadJob.run(UpdateCenter.java:1843)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at hudson.remoting.AtmostOneThreadExecutor$Worker.run(AtmostOneThreadExecutor.java:118)
at java.lang.Thread.run(Thread.java:748)

查了半天找不到相关的资料,怀疑是jenkins官方的问题,估计短期内就会修复,于是我找了下资料,发现还可以下载插件包后离线安装。无奈官网的插件完全无法下载,再查了一圈后,发现国内还是有jenkins的国内镜像站,我就是到清华的镜像站上下载的离线包,然后一个个手工安装。

清华镜像站:https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/

登录jenkins后,在“系统配置”-“插件管理”-"高级"-"上传插件"这上传离线包安装。

3.3 创建管理员

填写创建的用户名/密码等信息(这里填写了admin/admin)

3.4 修改实例配置的URL

Jenkins URL默认为“http://localhost:8080”,直接点击“保存并完成”

这样部署过程就完成了。

 

3.5 访问jenkins

浏览器访问 http://localhost:8080

 

 

原文地址:https://www.cnblogs.com/straycats/p/14033405.html