参考资料:http://www.javashuo.com/article/p-yidugmhu-dp.html (Jenkins(Docker容器内)使用宿主机的docker命令)html
https://container-solutions.com/running-docker-in-jenkins-in-docker/ (Running Docker in Jenkins (in Docker))linux
http://www.javashuo.com/article/p-najcacmc-em.html (基于Jenkins,docker实现自动化部署(持续交互))git
http://www.javashuo.com/article/p-hfieieto-gs.html (jenkins和docker实现自动化构建部署)github
http://www.javashuo.com/article/p-tvzzfyfm-n.html (Jenkins集成Docker镜像实现自动发布)docker
http://www.javashuo.com/article/p-dvfzmsbz-dw.html (jenkins详解)shell
http://www.javashuo.com/article/p-zkvaneas-dc.html (jenkins定时任务)segmentfault
http://www.javashuo.com/article/p-nadwajte-cd.html (docker环境下Jenkins持续集成(一))centos
http://www.javashuo.com/article/p-bidfkmzr-ct.html ( Docker:使用Jenkins构建Docker镜像)api
https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/bash
Jenkins安装通常分两种形式:直接安装和docker形式安装,为了方便移植建议用docker形式安装
建立Dockerfile文件
FROM jenkins/jenkins:lts USER root RUN apt-get update \ && apt-get install -y sudo \ && rm -rf /var/lib/apt/lists/* RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers
构建镜像
docker build -t jwh/jenkins .
启动jenkins容器
docker run -d -v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker --privileged -p 8888:8080 jwh/jenkins:v1
注意这两个volume参数(将jenkins容器内的docker命令指向了宿主机):
-v /var/run/docker.sock:/var/run/docker.sock
-v $(which docker):/usr/bin/docker
-v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 在centos7 系统下会出现个别的包丢失,对应的引下宿主机的包就能够。
配置jenkins
docker exec -it 52873fa3dce4 /bin/bash cat /var/jenkins_home/secrets #查看密码
安装必须的插件后新建一个job

代码在码云上,添加代码地址以及git登陆帐号
5分钟轮训构建
使用shell脚本构建docker
if sudo docker ps -a|grep -i g-imagery-script-api;then sudo docker rm -f g-imagery-script-api fi #删除已建的容器,防止容器名,端口冲突 sleep 1 cd /var/jenkins_home/workspace/g-imagery-script-api sudo docker build -t jwh/g-imagery-script-api:v1 . #根据dockerfile生成镜像 sleep 1 sudo docker run -d -p 5010:5010 --name g-imagery-script-api jwh/g-imagery-script-api:v1 #运行镜像生成容器