docker环境下Jenkins持续集成(一)
2016-08-21 16:34
387 查看
在docker的的大环境下,讲究一切docker化,所以继续集成也顺应潮流docker化。
此时,jenkins是运行docker容器中,要通docker配合完成持续集成,jenkins必须要能通知或者是调用docker命令。
在Docker中使用Docker有三种方:
此时,在容器中的docker和宿主机的docker是两个不同的程序,相互没有关联,DinD并不比使用特权模式的容器安全性高,不过确实能避免使用sudo。DinD最主要的劣势是你无法重用宿主缓存的镜像(不过如果需要为测试容器提供一个与宿主隔离的干净环境,这将很有用)。
通过HTTPS暴露socket不需要sudo并且可以使用宿主的镜像,但因为打开了端口增加了攻击面,可以说是最不安全的。
准备环境
从docker hub中pull下来jenkins的官方镜像,并运行起来。此时,jenkins是运行docker容器中,要通docker配合完成持续集成,jenkins必须要能通知或者是调用docker命令。
在容器中调用docker的方式
现在的问题是,jenkins是运行docker容器中,无法感知docker的存在。在Docker中使用Docker有三种方:
DooD(Docker-outside-of-Docker)
我们需要赋予jenkins用户sudo权限以便能在容器内运行Docker命令。当然,也可以将jenkins用户加入到Docker组中来避免在所有Docker命令前使用‘sudo’,不过由于这个组gid的不同会造成不可移植DinD(Docker in Docker)
在docker镜像中要再安装docker服务。此时,在容器中的docker和宿主机的docker是两个不同的程序,相互没有关联,DinD并不比使用特权模式的容器安全性高,不过确实能避免使用sudo。DinD最主要的劣势是你无法重用宿主缓存的镜像(不过如果需要为测试容器提供一个与宿主隔离的干净环境,这将很有用)。
使用HTTPS与Docker后台程序通讯
jenkins配置docker插件,并且docker进行端口配置。通过HTTPS暴露socket不需要sudo并且可以使用宿主的镜像,但因为打开了端口增加了攻击面,可以说是最不安全的。
相关文章推荐
- gitlab+jenkins+maven+docker持续集成(十)——参数化构建过程之多环境tag构建
- 使用Jenkins Pipeline插件和Docker打造容器化构建环境
- gitlab+jenkins+maven+docker持续集成(六)——.Jenkins获取git tags代码进行持续集成
- Jenkins构建iOS持续集成环境(一)
- 构建基于 Docker + Jenkins + Sahi 的 Web UI 自动化测试环境
- Python + Allure(报告)+ Jenkins(持续集成)接口自动化测试环境搭建
- 开发测试环境通过gitlab+jenkins+docker 实现一命令部署
- 打造jenkins+docker+nodejs项目的自动部署环境(webhook)
- Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目
- jenkins+docker+nodejs项目的自动部署环境(案例)
- Docker学习总结(13)——从零开始搭建Jenkins+Docker自动化集成环境
- 从零开始搭建Jenkins+Docker自动化集成环境
- Jenkins+Docker搭建持续集成测试环境
- Docker学习总结(13)——从零开始搭建Jenkins+Docker自动化集成环境
- Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目
- docker环境下Jenkins持续集成(二)
- gitlab+jenkins+maven+docker持续集成(三)——自动构建
- 搭建Jenkins+Docker自动化集成环境
- 基于阿里云的Jenkins+Maven+SVN+Tomcat的持续集成(一)--先前准备与jdk环境变量配置
- docker+jenkins 部署持续集成环境