Docker 方式运行 jenkins
原文地址:https://testerhome.com/topics/5798
简介说明
docker 是官方推荐的一种 jenkins 启动方式。

打开 jenkins 的官网,点击进入的是:
里面是 weekly releases 的镜像,对于官方推荐的 2.7.2 版本,是需要到 docker 官方仓库里面去找:
可以读一读底下的 Full Description ,有一些怎么使用 jenkins 镜像的说明
开始使用
拉取镜像
docker pull jenkins:2.7.2
通用的启动方式,用 -p 参数指定暴露的端口,用 -v 参数挂载 jenkins_home
docker run -p 8080:8080 -p 50000:50000 -v /your/home:/var/jenkins_home jenkins:2.7.2
- 8080 端口是访问 jenkins 网页的端口,如果你想在 80 端口访问,就改成 -p 80:8080
- 50000 端口与 slave 有关,参考 jnlp-slave 这个镜像,里面使用的 port。
- -v 参数挂载了宿主机一个指定目录到 /var/jenkins_home ,相当于设置了自定义的 JENKINS_HOME
jenkins 容器中添加 git, maven 等组件
一般我们使用jenkins的时候,需要用到 git, jdk, maven 等等的组件,在使用 docker-jenkins 的时候,可以用 -v 参数挂载到 /usr/bin 目录中,并不需要再在镜像中进行安装,也不需要基于jenkins镜像重新写dockerfile,保持镜像干净。
jenkins 容器中的公钥私钥
很常用的 jenkins 构建操作有:在 Execute shell 步骤中用 ssh 的方式远程登录上其他服务器,服务器上面的执行 shell 脚本。 ssh 方式需要用到的 public key 和 private key 也是可以用 -v 参数挂载到 /var/jenkins_home/.ssh 目录中。注意,这里不挂载到容器的 /root/.ssh 目录,因为整个 jenkins 容器是以 jenkins 用户来运行的。
在 jenkins 容器中调用 docker
有两种方式来调用 docker :
- 通常用在 docker 单节点下,可以挂载 docker 到 jenkins 容器中,添加如下参数:
-v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker - 通常用在 docker 集群中,可以使用 jenkins 的 docker 插件,连接到 Docker server REST API(http://master-ip:2375):
简单的方式启动 Docker server REST API
在安装容器管理工具 shipyard 的文档中,发现可以用 shipyard/docker-proxy 这个镜像来暴露 2375 端口, 得到一个 Docker server REST API
docker run \
-ti \
-d \
-p 2375:2375 \
--hostname=$HOSTNAME \
--restart=always \
--name shipyard-proxy \
-v /var/run/docker.sock:/var/run/docker.sock \
-e PORT=2375 \
shipyard/docker-proxy:latest
将 http://master-ip:2375 填入 jenkins 系统设置中的 Docker URL 就可以了(master-ip 是 docker server 的 ip)。

一个 jenkins 示例
我启动的 jenkins 里面包含 git, docker, 一份宿主机的公钥密钥, 自定义 JENKINS_HOME, 使用的启动命令如下:
docker run \
-d -p 8080:8080 -p 50000:50000 \
-v /home/docker/jenkins_home/:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(which docker):/usr/bin/docker \
-v $(which git):/usr/bin/git \
-v ~/.ssh:/var/jenkins_home/.ssh \
--name=jenkins jenkins:2.7.2
在 jenkins 设置任务来测试挂载的 git, docker, 以及公钥密钥是否正常

- git clone 用来测试 git 和 密钥是否生效
- docker run hello-world 用来测试在宿主机运行的 docker 容器
构建任务的 Console Output:

git 使用密钥正常克隆了代码,docker 正常启动了容器
期待更多
以后再总结下 docker 方式的 jenkins slave,以及 jenkins 的 docker 插件,jenkins 的 Docker CI 流程等等。
Docker 方式运行 jenkins的更多相关文章
- Docker 以 docker 方式运行 jenkins
https://testerhome.com/topics/5798 Docker 以 docker 方式运行 jenkins jmcn · 2016年08月26日 · 最后由 blueshark 回 ...
- jenkins和docker 在docker里运行jenkins
在docker里运行jenkins server. 文章来自:http://www.ciandcd.com文中的代码来自可以从github下载: https://github.com/ciandcd ...
- 在docker中运行jenkins实现代码自动发布到测试服务器
在docker中运行jenkins 用的镜像是apline版:lts-alpine,并设置正确的时区. docker run --name jenkins_master -d \ -p 8081:80 ...
- Docker方式安装Jenkins并且插件更改国内源
参考网站:https://www.jenkins.io/zh/doc/book/installing/#在docker中下载并运行jenkins 建议使用的Docker映像是jenkinsci/blu ...
- 使用Jenkins docker镜像运行Jenkins服务
需求 使用docker技术管理Jenkins服务器.避免多次部署需要重复安装的重复工作,且可以方便迁移到新的服务器. Jenkins docker镜像 https://hub.docker.com/_ ...
- docker里面运行jenkins详解
需求:将jenkins运行在docker中 思路:1.安装docker,并启动docker 服务 2.下载jenkins的docker镜像,然后运行. 前提知识:1.dockde ...
- Docker 方式运行 sonarqube
From 平台测试部同事的 ppt 感谢. 拉取镜像 docker pull postgres docker pull sonarqube 运行镜像 docker run --name db --re ...
- ZKUI中文编码以及以docker方式运行的问题
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- docker 方式运行drill
drill 1.14 版本已经官方支持使用docker 直接运行可,还是比较方便的,尽管镜像 有点大,但是实际测试使用还是比较方便的,实际上自己做一个也比较简单. 下载镜像 docker pull d ...
随机推荐
- Web.config中appSettings节点值两种读取方法
<appSettings> <add key="ClientPort" value="5252"/> <add ...
- centos6.5 的rpm 可以来这边找
http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-i386/gcc-4.8.2-16.3.fc20/
- CF A.Mishka and Contest【双指针/模拟】
[链接]:CF/4892 [题意]: 一个人解决n个问题,这个问题的值比k小, 每次只能解决最左边的或者最右边的问题 解决了就消失了.问这个人能解决多少个问题. [代码]: #include<b ...
- 洛谷——P1795 无穷的序列_NOI导刊2010提高(05)
P1795 无穷的序列_NOI导刊2010提高(05) 题目描述 有一个无穷序列如下: 110100100010000100000… 请你找出这个无穷序列中指定位置上的数字 输入输出格式 输入格式: ...
- 对Array.prototype.slice.call()方法的理解在看别人代码时,发现有这么个写法:[].slice.call(arguments, 0),这到底是什么意思呢?
1.基础 1)slice() 方法可从已有的数组中返回选定的元素. start:必需.规定从何处开始选取.如果是负数,那么它规定从数组尾部开始算起的位置.也就是说,-1 指最后一个元素,-2 指倒数第 ...
- 分享Kali Linux 2017年第29周镜像文件
分享Kali Linux 2017年第29周镜像文件 Kali Linux官方于7月16日发布2017年的第29周镜像.这次维持了11个镜像文件的规模.默认的Gnome桌面的4个镜像,E17.KDE ...
- POJ 3168 Barn Expansion (几何基础)
[题目链接] http://poj.org/problem?id=3168 [题目大意] 给出一些矩形,没有相交和包含的情况,只有相切的情况 问有多少个矩形没有相切或者边角重叠 [题解] 我们将所有的 ...
- 【数论】【筛法求素数】CODEVS 1462 素数和
好吧……我不会欧拉筛也就罢了…… 傻逼筛法竟然这么长时间以来 一直RE ……源头竟然是 int 爆了. #include<cstdio> #include<algorithm> ...
- [JOISC2017]細長い屋敷
题目大意: $n(n\le5\times10^5)$个房间排成一排,相邻两个房间之间有一扇门,第$i$个房间和第$i+1$个房间之间的门可以用第$c_i$种钥匙打开(可能有多个门可以用同一种钥匙打开) ...
- [美团 CodeM 初赛 Round A]最长树链
题目大意: 给你一棵带点权的树,找出一个最长的树链满足链上点权的最大公因数不为1. 思路: 暴力DP. 对于每个点,记录一下以这个点为一个端点的所有链的最大公因数及长度. 然后暴力转移一下,时间复杂度 ...