Docker 以 docker 方式运行 jenkins

jmcn · 2016年08月26日 · 最后由 blueshark 回复于 2016年09月06日 · 3600 次阅读
 本帖已被设为精华帖!
 目录 

简介说明

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 :

  1. 通常用在 docker 单节点下,可以挂载 docker 到 jenkins 容器中,添加如下参数: -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker
  2. 通常用在 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 以 docker 方式运行 jenkins的更多相关文章

  1. Docker 方式运行 jenkins

    原文地址:https://testerhome.com/topics/5798 简介说明 docker 是官方推荐的一种 jenkins 启动方式. 打开 jenkins 的官网,点击进入的是: ht ...

  2. 如何让docker以daemon方式运行/bin/bash

    本文转自:https://segmentfault.com/q/1010000000424935 问题: 我想在docker run的时候,用-d参数运行/bin/bash,然后让这个bash一直跑着 ...

  3. Docker方式安装Jenkins并且插件更改国内源

    参考网站:https://www.jenkins.io/zh/doc/book/installing/#在docker中下载并运行jenkins 建议使用的Docker映像是jenkinsci/blu ...

  4. jenkins和docker 在docker里运行jenkins

    在docker里运行jenkins server. 文章来自:http://www.ciandcd.com文中的代码来自可以从github下载: https://github.com/ciandcd ...

  5. docker里面运行jenkins详解

    需求:将jenkins运行在docker中 思路:1.安装docker,并启动docker 服务            2.下载jenkins的docker镜像,然后运行. 前提知识:1.dockde ...

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

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

  7. 用Docker运行Jenkins自动化构建.NET Core项目

    目标 当代码提交到GitHub后,自动生成构建项目并部署到服务器.接下来介绍一下如何在容器中运行Jenkins,并自动化构建GitHub上的项目,使用自动化构建来解放你的双手. 前置条件 一台已经安装 ...

  8. docker 运行jenkins及vue项目与springboot项目(三.jenkins的使用及自动打包vue项目)

    docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四 ...

  9. docker 运行jenkins及vue项目与springboot项目(一.安装docker)

    docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四 ...

随机推荐

  1. dll反编译工具总结

    有好多.net程序有加密狗或者有验证,如果exe或dll没有做过特殊处理,破解.net程序其实很简单,不过你要有足够的耐心! 我只做个简单的小例子,把公司的软件破解了,不要被老大知道,吼吼~~~~ 1 ...

  2. asp.net core服务的生命周期

    Transient:每一次GetService都会创建一个新的实例 Scoped:在同一个Scope内只初始化一个实例 ,可以理解为( 每一个request级别只创建一个实例,同一个http requ ...

  3. mongodb的几种启动方法

    1 mongodb的几种启动方法   启动Mongodb服务有两种方式,前台启动或者Daemon方式启动,前者启动会需要保持当前Session不能被关闭,后者可以作为系统的fork进程执行,下文中的p ...

  4. 附003.Docker Compose命令详解

    一 Docker Compose命令格式 Usage: docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...] docker- ...

  5. 收缩自编码器(CAE)

    自编码器是一种很好的降维技术,它可以学习到数据中非常有用的信息.而收缩自编码器作为正则自编码器的一种,其非线性降维效果非常好,并且它的过程可以通过流形知识来解释. 基础知识 1.自编码器 自编码器是一 ...

  6. java代码审计文章集合

    0x00 前言 java代码审计相关文章整理,持续更新. 0x01 java环境基础 搭建Java Web开发环境   配置IDEA编辑器开发java web,从0创建项目   IDEA动态调试   ...

  7. git 详细教程和常用操作指令

    git 内部工作原理图 如上图,git 一般可以分为三个区:工作区.暂存区.版本库,通常类似 git add等命令都是与index 暂存区的交互,git commit指令则是 index 与版本库的交 ...

  8. mfc调用cmd执行完保留黑框

    mfc调用cmd的方法有很多,本文采用 ShellExecute ShellExecute(AfxGetMainWnd()->m_hWnd,L"open",L"cm ...

  9. BZOJ.1468.Tree(点分治)

    BZOJ1468 POJ1741 题意: 计算树上距离<=K的点对数 我们知道树上一条路径要么经过根节点,要么在同一棵子树中. 于是对一个点x我们可以这样统计: 计算出所有点到它的距离dep[] ...

  10. python计算文件夹大小——os.walk

    下面提供一种利用os.walk()快捷的计算指定文件夹大小的方法 话不多说,直接上代码 简略版: import os def get_file_size(file_path, size=0): for ...