一. 构建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.0

WAR 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镜像的更多相关文章

  1. CentOS7下Docker中构建Jenkins容器

    背景 在CentOS搭建Docker完成后,我们需要在Docker中搭建Jenkins用来实现工程自动部署. 安装前提 jdk已安装,安装目录如:usr/java/jdk1.8.0_161 maven ...

  2. 在docker中运行jenkins实现代码自动发布到测试服务器

    在docker中运行jenkins 用的镜像是apline版:lts-alpine,并设置正确的时区. docker run --name jenkins_master -d \ -p 8081:80 ...

  3. 在docker中部署centos7镜像

    本篇文章参考自: https://www.cnblogs.com/linjj/p/5606911.html https://blog.csdn.net/u012767761/article/detai ...

  4. docker中搭建jenkins环境

    想在docker中搭建一个jenkins环境.开始的时候我想在先pull centos,然后在里面自己搭建环境,搭建后的环境可以运行,但是不知道挂载哪的数据,这也是我不熟悉jenkins的原因. 同事 ...

  5. Docker中完成Jenkins的安装

    去年就开始学习采用Docker+Jenkins+.Net Core搭建生成式流水线,一直拖到现在,也没有彻底的好好静下来去总结总结.趁着现在对自己的严格要求下,逐渐开始重视自我总结,以此来巩固逐渐失去 ...

  6. docker中安装Jenkins

    1.获取Jenkins镜像(不要直接docker pull jenkin,这样获取的不是最新的版本,后续安装部分插件会不成功) docker pull jenkins/jenkins 创建文件夹 su ...

  7. docker中容器和镜像的区别

    自学docker过程中一直搞不明白 镜像容器的关系,网上查阅看到一篇文章觉得讲的很好,转载记录. 转自 http://blog.csdn.net/chszs/article/details/48252 ...

  8. Docker中使用CentOS7镜像

    因后面会将操作系统从CentOS6.4升级到CentOS7,先试用下CentOS7. 启动容器服务 systemctl start docker.service 下载CentOS7 镜像   [roo ...

  9. docker中基于centos镜像部署lnmp环境 php7.3 mysql8.0 最新版

    Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源. Docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的Linux机器上 ...

随机推荐

  1. (转) 使用vivado创建工程 4[完结]

    由于自己手头暂时没有开发板,因此本节没有测试,故告之. Connecting to ZedBoardBefore we can run the application we have to conne ...

  2. 使用RVM轻松部署Ruby环境

    Ruby用得不多,但发现有业务需要部署指定的版本和插件.起初找了一些Fedora的src.rpm重新打包,发现依赖问题比较多,最终还是费劲的把el6的包编出来了. 不巧今天又有业务要求el5的包,原本 ...

  3. bzoj 1455: 罗马游戏

    1455: 罗马游戏 Time Limit: 5 Sec  Memory Limit: 64 MB Description 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人,每个人都是一个独立的团.最 ...

  4. 修改tomcat的Response Hearder 头中的Server信息

    如图: Server: Apache-Coyote/1.1 这个信息给入侵者提供了一定的指示作用.为了安全起见,要求更改这个信息.那么我们就来修改一下试试,非常简单,只要在Connector中添加se ...

  5. [php]require&require_once&include&include_once的用法与区别

    1.require和include是php引入php文件的两种方式,使用格式如下: require(include) 文件名; require(include) 变量(此变量存储的是文件名); 2.区 ...

  6. 【CodeForces】790 C. Bear and Company 动态规划

    [题目]C. Bear and Company [题意]给定大写字母字符串,交换相邻字符代价为1,求最小代价使得字符串不含"VK"子串.n<=75. [算法]动态规划 [题解 ...

  7. /i,/m,/s,/x,/A,/s,/U,/x,/j,/u 等正则修饰符用法~

    i (PCRE_CASELESS) 如果设置了这个修饰符,模式中的字母会进行大小写不敏感匹配. m (PCRE_MULTILINE) 默认情况下,PCRE 认为目标字符串是由单行字符组成的(然而实际上 ...

  8. vue使用jsx/axios拦截器设置

    最害怕的就是做过的事情,转几天又忘记了:写过的代码,也模模糊糊不知道哪里去了,所以告诉自己最好把每天遇到的问题记录下来,好,开始. 新公司要搭个vue后台框架,所以用了简简单单的 vue+iview+ ...

  9. Skipping 'Android SDK Tools, revision 24.0.2'; it depends on 'Android SDK Platform-tools, revision 20' which was not installed.

    前几天,同事问我eclipse android sdk怎么不能更新. 更新界面是显示(mirrors.neusoft.edu.cn:80),但是不能更新. 问题描述如下: URL not found: ...

  10. 29、最小的K个数

    一.题目 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 二.解法 import java.util.ArrayList; ...