在Docker中自定义Jenkins镜像
一. 构建Jenkins slave.
1. 构建镜像需要三个步骤:
(1) 创建Dockerfile
(2) 构建镜像
(3)在master上改变agent的配置
2. 以下是创建一个服务Python项目的jenkins slave. 为了简单起见,该实验用的evarga/jenkins-slave镜像为基础。
(1)创建Dockerfile文件
[root@c720120 docker]# cat Dockerfile
FROM evarga/jenkins-slave
RUN apt-get update && \
apt-get install -y python
(2)构建镜像,执行以下命令
[root@c720120 docker]# docker build -t jenkins-slave-python .
(3)配置master.
在setting Docker agent章节中,把evarga/jenkins-slave 替换为jenkins-slave-python.
二. 构建Jenkins master.
1. 案例1: 创建jenkins master镜像,并已经安装docker-plugin和设置同时执行数量设置为5.
需要以下步骤:
(1)在config.xml中创建Groovy脚本和设置执行数量为5.
(2)创建Dockerfile和安装docker-plugin,执行Groovy 脚本。
(3)构建镜像
2. 创建步骤
(1)创建一个新的目录,并把executors.groovy文件放入该目录中。
[root@c720120 docker]# cat executors.groovy
import jenkins.model.*
Jenkins.instance.setNumExecutors(5)
(2)在相同的目录中创建Dockerfile。
[root@c720120 docker]# cat Dockerfile
FROM jenkins
COPY executors.groovy
/usr/share/jenkins/ref/init.groovy.d/executors.groovy
RUN /usr/local/bin/install-plugins.sh docker-plugin
(3)构建镜像
[root@c720120 docker]# docker build -t jenkins-master .
Sending build context to Docker daemon 3.072kB
Step 1/3 : FROM jenkins
---> 07b4164f9789
Step 2/3 : COPY executors.groovy /usr/share/jenkins/ref/init.groovy.d/executors.groovy
---> 4a2c176f2d1f
Step 3/3 : RUN /usr/local/bin/install-plugins.sh docker-plugin
---> Running in ed24ad803c7c
Creating initial locks...
Analyzing war...
Using version-specific update center: https://updates.jenkins.io/2.60...
Downloading plugins...
Downloading plugin: docker-plugin from https://updates.jenkins.io/2.60/latest/docker-plugin.hpi
> docker-plugin depends on workflow-api:2.23.1;resolution:=optional,workflow-cps:2.41;resolution:=optional,workflow-durable-task-step:2.17;resolution:=optional,workflow-step-api:2.14;resolution:=optional,workflow-support:2.16;resolution:=optional,apache-httpcomponents-client-4-api:4.5.3-2.0,bouncycastle-api:2.16.2,docker-commons:1.9,docker-java-api:3.0.14,durable-task:1.16,script-security:1.36;resolution:=optional,ssh-slaves:1.22,token-macro:2.3
Skipping optional dependency workflow-api
Skipping optional dependency workflow-cps
Skipping optional dependency workflow-durable-task-step
Skipping optional dependency workflow-step-api
Skipping optional dependency workflow-support
Downloading plugin: apache-httpcomponents-client-4-api from https://updates.jenkins.io/2.60/latest/apache-httpcomponents-client-4-api.hpi
Downloading plugin: bouncycastle-api from https://updates.jenkins.io/2.60/latest/bouncycastle-api.hpi
Downloading plugin: docker-commons from https://updates.jenkins.io/2.60/latest/docker-commons.hpi
Downloading plugin: docker-java-api from https://updates.jenkins.io/2.60/latest/docker-java-api.hpi
Skipping optional dependency script-security
Downloading plugin: durable-task from https://updates.jenkins.io/2.60/latest/durable-task.hpi
Downloading plugin: ssh-slaves from https://updates.jenkins.io/2.60/latest/ssh-slaves.hpi
Downloading plugin: token-macro from https://updates.jenkins.io/2.60/latest/token-macro.hpi
> token-macro depends on workflow-step-api:2.7
Downloading plugin: workflow-step-api from https://updates.jenkins.io/2.60/latest/workflow-step-api.hpi
> workflow-step-api depends on structs:1.5
Downloading plugin: structs from https://updates.jenkins.io/2.60/latest/structs.hpi
> docker-commons depends on authentication-tokens:1.3,credentials-binding:1.12,credentials:2.1.13
Downloading plugin: authentication-tokens from https://updates.jenkins.io/2.60/latest/authentication-tokens.hpi
Downloading plugin: credentials-binding from https://updates.jenkins.io/2.60/latest/credentials-binding.hpi
Downloading plugin: credentials from https://updates.jenkins.io/2.60/latest/credentials.hpi
> authentication-tokens depends on credentials:1.22
> credentials-binding depends on workflow-step-api:2.10,credentials:2.1.7,plain-credentials:1.3,ssh-credentials:1.11,structs:1.7
Downloading plugin: plain-credentials from https://updates.jenkins.io/2.60/latest/plain-credentials.hpi
Downloading plugin: ssh-credentials from https://updates.jenkins.io/2.60/latest/ssh-credentials.hpi
> credentials depends on structs:1.7
> docker-java-api depends on jackson2-api:2.6.4
Downloading plugin: jackson2-api from https://updates.jenkins.io/2.60/latest/jackson2-api.hpi
> ssh-slaves depends on credentials:2.1.2,ssh-credentials:1.6.1
> plain-credentials depends on credentials:2.1.5
> ssh-credentials depends on credentials:2.1.0WAR bundled plugins:
Installed plugins:
apache-httpcomponents-client-4-api:4.5.5-3.0
authentication-tokens:1.3
bouncycastle-api:2.16.3
credentials-binding:1.16
credentials:2.1.16
docker-commons:1.13
docker-java-api:3.0.14
docker-plugin:1.1.4
durable-task:1.22
jackson2-api:2.8.11.3
plain-credentials:1.4
ssh-credentials:1.13
ssh-slaves:1.26
structs:1.14
token-macro:2.5
workflow-step-api:2.15
Cleaning up locks
Removing intermediate container ed24ad803c7c
---> 3f54b7f95dd7
Successfully built 3f54b7f95dd7
Successfully tagged jenkins-master:latest
在Docker中自定义Jenkins镜像的更多相关文章
- CentOS7下Docker中构建Jenkins容器
背景 在CentOS搭建Docker完成后,我们需要在Docker中搭建Jenkins用来实现工程自动部署. 安装前提 jdk已安装,安装目录如:usr/java/jdk1.8.0_161 maven ...
- 在docker中运行jenkins实现代码自动发布到测试服务器
在docker中运行jenkins 用的镜像是apline版:lts-alpine,并设置正确的时区. docker run --name jenkins_master -d \ -p 8081:80 ...
- 在docker中部署centos7镜像
本篇文章参考自: https://www.cnblogs.com/linjj/p/5606911.html https://blog.csdn.net/u012767761/article/detai ...
- docker中搭建jenkins环境
想在docker中搭建一个jenkins环境.开始的时候我想在先pull centos,然后在里面自己搭建环境,搭建后的环境可以运行,但是不知道挂载哪的数据,这也是我不熟悉jenkins的原因. 同事 ...
- Docker中完成Jenkins的安装
去年就开始学习采用Docker+Jenkins+.Net Core搭建生成式流水线,一直拖到现在,也没有彻底的好好静下来去总结总结.趁着现在对自己的严格要求下,逐渐开始重视自我总结,以此来巩固逐渐失去 ...
- docker中安装Jenkins
1.获取Jenkins镜像(不要直接docker pull jenkin,这样获取的不是最新的版本,后续安装部分插件会不成功) docker pull jenkins/jenkins 创建文件夹 su ...
- docker中容器和镜像的区别
自学docker过程中一直搞不明白 镜像容器的关系,网上查阅看到一篇文章觉得讲的很好,转载记录. 转自 http://blog.csdn.net/chszs/article/details/48252 ...
- Docker中使用CentOS7镜像
因后面会将操作系统从CentOS6.4升级到CentOS7,先试用下CentOS7. 启动容器服务 systemctl start docker.service 下载CentOS7 镜像 [roo ...
- docker中基于centos镜像部署lnmp环境 php7.3 mysql8.0 最新版
Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源. Docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的Linux机器上 ...
随机推荐
- 在Eclipse中开发使用Spring IOC的JUnit/TestNG测试用例之详解
转载自:http://blog.csdn.net/radic_feng/article/details/6740438 我们期望能像在产品代码中一样,在测试用例中使用的bean也由Spring Con ...
- POJ 1556 The Doors 线段交 dijkstra
LINK 题意:在$10*10$的几何平面内,给出n条垂直x轴的线,且在线上开了两个口,起点为$(0, 5)$,终点为$(10, 5)$,问起点到终点不与其他线段相交的情况下的最小距离. 思路:将每个 ...
- stat命令--文件权限属性设置
stat命令文件权限属性设置 stat命令用于显示文件的状态信息. stat命令的输出信息比ls命令的输出信息要更详细. 语法 stat(选项)(参数) 选项 -L:支持符号连接: -f:显示文件系统 ...
- ① 设计模式的艺术-01.单例(Singleton)模式
单例模式为何要出现 在工作过程中,发现所有可以使用单例模式的类都有一个共性,那就是这个类没有自己的状态,换句话说,这些类无论你实例化多少个,其实都是一样的. 如果我们不将这个类控制成单例的结构,应用中 ...
- 【BZOJ】2337: [HNOI2011]XOR和路径 期望+高斯消元
[题意]给定n个点m条边的带边权无向连通图(有重边和自环),在每个点随机向周围走一步,求1到n的期望路径异或值.n<=100,wi<=10^9. [算法]期望+高斯消元 [题解]首先异或不 ...
- javaScript 中的一些日常用法总结
从今天开始把开发中常用到的js语法 一一记录下来 方便以后复习回顾用: 1:对字符串进行替换 replace 以及 replaceAll replace : var begin_date =begin ...
- 2017ACM暑期多校联合训练 - Team 7 1002 HDU 6121 Build a tree (深搜+思维)
题目链接 Problem Description HazelFan wants to build a rooted tree. The tree has n nodes labeled 0 to n− ...
- D - Frog and Portal (利用斐波那契数列的性质)
题目链接:https://cn.vjudge.net/contest/270201#problem/D 具体思路:利用斐波那契数列的性质,斐波那契数列可以构成任何正整数,所以按照顺序减下去肯定能减到0 ...
- Coursera在线学习---第六节.构建机器学习系统
备: High bias(高偏差) 模型会欠拟合 High variance(高方差) 模型会过拟合 正则化参数λ过大造成高偏差,λ过小造成高方差 一.利用训练好的模型做数据预测时,如果效果不好 ...
- python基础之上下文管理器
前言 关于计算器运行的上下文的概念,我的理解也不是很深:按我的理解就是程序在运行之前,其所需要的资源,运行环境等都会被序列化,然后加入到CPU的任务队列中,等待调度系统分配时间片执行.下面谈谈pyth ...