######
1、所需环境
docker-ce
2、部署jenkins
用中文社区提供的 Jenkins 镜像 无需设置,直接安装即可,速度飞快。
附-官方镜像安装插件失败分析
以上面 Jenkins 挂载的目录为例
在 jenkins_home 的目录下,hudson.model.UpdateCenter.xml 这个文件定义了 插件拉取的配置地址,默认的地址可以直接访问,你会发现,他连接的是 https://www.google.com/, 由于墙的原因,这个地址一直访问失败。
在/jenkins_home/updates 目录下的default.json 文件内容,就是hudson.model.UpdateCenter.xml 定义的插件拉取的配置地址 里面的内容。即使你通过其他博客 修改了 default.json 的文件内容,当你再次 启动的时候,会立马还原过来,所以怎么修改都还不会生效。
而 Jenkins 中文社区提供的镜像,这块已经处理好了,插件拉取的配置地址 已经换为国内镜像地址,所以插件下载非常快。
Jenkins 中文社区 关于插件拉取的解释:
https://community.jenkins-zh.cn/t/jenkins/26
https://jenkins-zh.cn/wechat/articles/2019/11/2019-11-11-update-center-mirror-announcement/
# dockerhub镜像地址: https://hub.docker.com/_/jenkins?tab=tags&page=1&ordering=last_updated
# 中文镜像地址: https://hub.docker.com/r/jenkinszh/jenkins-zh/tags?page=1&ordering=last_updated
docker pull jenkinszh/jenkins-zh:2.267
mkdir -p /home/jenkins
# docker中jenkins用户ID为1000
chown -R 1000:1000 /home/jenkins
docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v /home/jenkins:/var/jenkins_home \
--env JAVA_OPTS="-Xms1024m -Xmx1024m -Xmn512m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -Duser.timezone=Asia/Shanghai" \
jenkinszh/jenkins-zh:2.267
#附加:
#(上述启动方式是以jenkins用户启动,需要授权目录才能挂载,此方式root用户直接创建目录挂载即可)
#(需要执行远程服务器命令,在宿主机做免密直接将/root/.ssh文件挂载到容器中即可 )
docker 以root用户启动容器
参数:-u root
示例:
docker run -d --name jenkins -u root -p 8080:8080 -p 50000:50000 -v /root/.ssh:/root/.ssh -v /home/jenkins:/var/jenkins_home \
--env JAVA_OPTS="-Xms1024m -Xmx1024m -Xmn512m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -Duser.timezone=Asia/Shanghai" \
jenkinszh/jenkins-zh:2.267
3、参数简介
-p 外部端口:容器内部端口
-d 后台启动
-v 文件映射[宿主机目录:容器目录]
--name 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字
-Duser.timezone=Asia/Shanghai 指定时区
4、jenkins插件
SSH Build Agents
Publish Over SSH
SSH
SSH Agent
Git
Git client
Git Parameter
Gitlab
Gitlab Hook
Role-based Authorization Strategy
Active Choices
build user vars
4.1、SSH Build Agents 插件
允许使用SSH协议的Java实现通过SSH启动代理,配置多node节点。
4.2、Publish Over SSH 插件
通过 SSH 发送构建工件
4.3、SSH 插件
该插件使用 SSH 协议远程执行 shell 命令
4.4、SSH Agent 插件
此插件允许您通过Jenkins中的ssh-agent提供SSH凭据以进行构建
4.4、Git 插件
这个插件将Git与 Jenkins集成在一起。
4.5、Git client 插件
Jenkins中用于 Git 支持的实用程序插件
4.6、Git Parameter 插件
添加从项目中配置的 git 存储库中选择分支、标签或修订的功能。
4.7、Gitlab 插件
该插件允许GitLab触发 Jenkins 构建并在 GitLab UI 中显示其结果。
4.8、Gitlab Hook 插件
启用 Gitlab 网络钩子来触发 Gitlab 项目上的 SMC 轮询
4.9、Role-based Authorization Strategy 插件
使用基于角色的策略启用用户授权。角色可以全局定义,也可以为由正则表达式选择的特定作业或节点定义。
4.10、Active Choices 插件
该插件为作业提供了额外的参数类型,允许您级联更改并渲染图像或其他 HTML 元素,而不是传统参数。
4.11、build user vars 插件
该插件用于设置用户构建变量:jenkins 用户名和 id。
5、制作docker-jenkins 升级镜像
下载jenkins war包:
清华源 下载地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/
官方 下载地址:http://mirrors.jenkins.io/war/
[root@docker-jenkins ~]# ls -l /home/upgrade
total 70552
-rw-r--r-- 1 root root 129 Oct 28 14:56 Dockerfile
-rw-r--r-- 1 root root 72236001 Oct 28 14:16 jenkins.war_2.319
-rwxr-xr-x 1 root root 584 Nov 1 12:24 start_jenkins.sh
[root@docker-jenkins ~]# cat /home/upgrade/Dockerfile
#docker hub 官方镜像
FROM jenkinszh/jenkins-zh:2.267
# 我的镜像仓库文件(与官方镜像文件一至)
# FROM faith1/jenkinszh:jenkins-zh_2.267
COPY jenkins.war_2.319 /usr/share/jenkins/jenkins.war
[root@docker-jenkins ~]# cd /home/upgrade && docker build -t faith1/jenkinszh:jenkins-zh_2.319 .
Sending build context to Docker daemon 72.24MB
Step 1/2 : FROM jenkinszh/jenkins-zh:2.267
---> 96166763ba59
Step 2/2 : COPY jenkins.war_2.319 /usr/share/jenkins/jenkins.war
---> 785dbf8ff958
Successfully built 785dbf8ff958
Successfully tagged faith1/jenkinszh:jenkins-zh_2.319
[root@docker-jenkins ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
faith1/jenkinszh jenkins-zh_2.319 785dbf8ff958 2 minutes ago 862MB
jenkinszh/jenkins-zh 2.267 96166763ba59 8 months ago 790MB
faith1/jenkinszh jenkins-zh_2.318 05a094caba2a 10 days ago 862MB
[root@docker-jenkins ~]# cat /home/upgrade/start_jenkins.sh
#!/bin/bash
docker run -d --name jenkins_2.319 -u root \
-p 8080:8080 -p 50000:50000 \
-v /root/.ssh:/root/.ssh \
-v /home/wx/.jenkins:/var/jenkins_home \
--env JAVA_OPTS="-Xms2048m -Xmx2048m -Xmn1024m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -Duser.timezone=Asia/Shanghai" \
faith1/jenkinszh:jenkins-zh_2.319
######