Docker+Jenkins_自动化持续集成
1、软件简述:
Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
这里有一个误区,Docker 跟Jenkins 并没有直接的联系,Jenkins 是实现自动打包的,打包完也是可以实现自动部署的,并不是没有Docker 就不可以实现自动部署了,这里我需要强调一点。之所以用Docker,是因为Docker 是一个相比较而言比较成熟的一种技术了,而且他的优势在于,可以实现隔离,可以在不同的操作系统跑应用(Windows,Linux)并且还可以做到日志分离。
2、安装软件:
2.1、安装 Jenkins:
因为Jenkins 是java项目,所以需要安装可以运行java应用的环境,我这里使用Tomcat了(也可以用 jboss)。
下载tomcat 并安装(JDK的安装请自行百度)
1 [root@zabbix src]# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.0.M21/bin/apache-tomcat-9.0.0.M21.tar.gz 2 [root@zabbix src]# tar zxf apache-tomcat-9.0.0.M21.tar.gz 3 [root@zabbix src]# mv apache-tomcat-9.0.0.M21 /usr/local/tomcat9
验证Tomcat 是否安装成功
1 [root@zabbix src]# /usr/local/tomcat9/bin/version.sh 2 Using CATALINA_BASE: /usr/local/tomcat9 3 Using CATALINA_HOME: /usr/local/tomcat9 4 Using CATALINA_TMPDIR: /usr/local/tomcat9/temp 5 Using JRE_HOME: /usr/local/jdk1.8/jre 6 Using CLASSPATH: /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar 7 Server version: Apache Tomcat/9.0.0.M21 8 Server built: May 4 2017 22:42:36 UTC 9 Server number: 9.0.0.0 10 OS Name: Linux 11 OS Version: 3.10.0-327.36.3.el7.x86_64 12 Architecture: amd64 13 JVM Version: 1.8.0_121-b13 14 JVM Vendor: Oracle Corporation
有了环境,我们就可以安装Jenkins了,就跟平时发布一样的步骤,这里我就不解释了吧!!!相信大神们都看不下去了
[root@zabbix src]# wget http://mirrors.jenkins.io/war/latest/jenkins.war [root@zabbix src]# mv jenkins.war /usr/local/tomcat9/webapps/ [root@zabbix src]# /usr/local/tomcat9/bin/startup.sh [root@zabbix webapps]# netstat -lptun | grep 8080 tcp 4 0 0.0.0.0:8080 0.0.0.0:* LISTEN 31160/java
OK我们来验证下,并完成后续步骤
打开浏览器,最好使用谷歌,或者火狐。在地址栏输入http://IP:8080/jenkins
这里需要输入密码,密码按照提示寻找,正常情况下应该是在:/root/.jenkins/secrets/initialAdminPassword
查看自己的密码
1 [root@zabbix logs]# cat /root/.jenkins/secrets/initialAdminPassword 2 cdf09c86f86e436189639cf5230aa09a
输完密码点击 Continue 按钮进行下一步
左边是默认安装,右边是自定义安装,本地实验不需要特殊需求,所以选择默认安装了。
附张正在装的图,页面还是蛮精美的
如果无法安装,就是你的网络有问题,自己先把网络搞定了在说吧!
安装完成后输入自己的用户名,密码等个人信息。然后Save and Finish一下,之后就可以启动Jenkins了
至此Jenkins 安装完成。
2.2、安装Docker
安装Docker 建议
( RedHat | Centos ) 7.0以上版本
1 [root@zabbix logs]# yum -y install docker-io 2 [root@zabbix logs]# docker version 3 Client: 4 Version: 1.12.6 5 API version: 1.24 6 Package version: docker-1.12.6-28.git1398f24.el7.centos.x86_64 7 Go version: go1.7.4 8 Git commit: 1398f24/1.12.6 9 Built: Fri May 26 17:28:18 2017 10 OS/Arch: linux/amd64 11 Cannot connect to the Docker daemon. Is the docker daemon running on this host? 12 [root@zabbix ~]# systemctl start docker
安装完毕,如果遇到不能安装的情况下,可以试下换yum源,我的腾讯云的服务器,所以用的是腾讯的yum源
2.3、安装 maven
因为项目中使用到了maven 所以需要把maven 融合到Jenkins 里面去
[root@zabbix src]# wget http://apache.fayea.com/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz [root@zabbix src]# tar zxf apache-maven-3.5.0-bin.tar.gz [root@zabbix src]# mv apache-maven-3.5.0 /usr/local/mvn
添加环境变量:追加两行到/etc/profile 最后验证是否安装成功mvn -v
export MAVEN_HOME=/usr/local/mvn export PATH=$PATH:$MAVEN_HOME/bin [root@zabbix src]# mvn -v Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T03:39:06+08:00) Maven home: /usr/local/mvn Java version: 1.8.0_121, vendor: Oracle Corporation Java home: /usr/local/jdk1.8/jre Default locale: en_US, platform encoding: ANSI_X3.4-1968 OS name: "linux", version: "3.10.0-327.36.3.el7.x86_64", arch: "amd64", family: "unix"
至此,软件安装完毕。
3、创建一个项目
先配置一下Jenkins
首页–> 系统管理 –> Global Tool Configuration –> 新增“jdk Maven Docker” #注意:是三个,不是一个,如果路径不对,会有报错的
最后不要忘记,Save下 # 使用svn的小伙伴注意了:“如果没有新增svn 可以在插件管理选项中安装svn 插件后即可新增svn,这个自行百度。”
3.1、创建一个新任务
点击图片中的 开始创建一个新任务,这里创建一个自由风格的软件项目,并书写上项目名称,点击OK进行下一步操作
源码管理,我这里使用git的方式来管理项目,我这里去开源中国找一个免费开源项目来进行测试。
正常的构建项目只需要做好源码管理即可,如需要使用Docker 使用shell即可调用。触发器的作用相当于触发某个条件,就会立即去构建,不必后期的手工构建了。
点击类似时钟的图标,点击立即构建,然后他会自动去打包,如果成功,S下面的图标会显示为蓝色,右边为太阳的图标。至此项目构建完成。
4、最后附上 Docker 常用命令:会用Docker的大神请略过,并希望可以加个QQ:1747535503 做个朋友认识下,谢谢!
1 Docker 命令集 2 寻找网络镜像命令 3 docker search centos 4 5 [root@test ~]# docker search centos 6 名字 描述 下载次数 是否官方 是否是Dockerfile构建的 7 INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMAT 8 docker.io docker.io/centos The official build of CentOS. 3301 [OK] 9 10 下载镜像 11 docker pull centos 12 查看镜像 13 docker images 14 删除镜像 15 docker rmi 16 17 容器命令 18 启动容器 19 docker run --name -h hostname 20 启动容器2 21 docker start CONTAINER ID 22 停止容器 23 docker stop CONTAINER ID 24 查看容器 25 docker ps -a 26 进入容器 27 docker exec | docker attach 28 删除容器 29 docker rm 30 31 进入后台运行容器 32 docker attach 68e5c66ee5c9 退出自动停止运行容器 33 34 进入容器 35 docker run --name mydocker -it docker.io/centos /bin/bash 36 -d 进入后台运行 37 --run 运行 38 --name 指定名字 39 -i 输入终端打开 40 -t 开一个伪终端 41 42 进入容器不退出 43 1、进入容器 44 docker run --name mydocker -it docker.io/centos /bin/bash 45 2、退出 46 3、启动容器 47 docker ps -a查询ID号 48 docker start ID号 49 4、获取Pid号 50 docker inspect --format "{{.State.Pid}}" 68e5c66ee5c9 51 5、进入容器而不退出 52 nsenter --target 19205 --mount --uts --ipc --net --pid 退出不停止运行容器 53 如果没有这个命令,需要安装util-linux包 nsenter 54 55 6、懒人写法 56 nsenter --target `docker inspect --format "{{.State.Pid}}" ID` --mount --uts --ipc --net --pid 57 docker 网络访问 58 docker run -P 59 -P 随机映射 60 -p hostport:containerPort 61 -p ip:hostPort:containerPort 62 -p ip::containerPort 63 -p hostPort:containerPort 64 -p hostPort:containerPort 65 66 数据卷管理 67 docker 68 -v /data 69 -v /src:/dsrc 70 -v /src:/src:ro 71 72 容器的制作 73 docker commit -m "my nginx" f443e801f545 shijia/my-nginx:v1 74 Docker file 的方式构建docker镜像 75 76 FROM 他的妈妈是谁(基础镜像) 77 MAINTAINER 告诉被人,你创造了他(维护者信息) 78 RUN 你想让他干啥(把命令前面加上RUN) 79 ADD 相当于cp命令(COPY文件,会自动解压) 80 WORKDIR 相当于cd命令(当前工作目录) 81 VOLUME 给我一个放行李的地方(目录挂载) 82 EXPOSE 我要打开的门是啥(端口) 83 RUN 奔跑吧,兄弟!(进程要一直运行下去) 84 85 Docker 案例 86 vim /opt/docker-file/nginx/Dockerfile 87 88 # This is My first Dockerfile 89 # Version 1.0 90 # Author : Shijia Zhang 91 92 #Base images 93 FROM centos 94 95 #MAINTAINER 96 MAINTAINER ShiJia Zhang 97 98 #ADD 99 ADD pcre-8.37.tar.gz /usr/local/src 100 ADD nginx-1.9.3.tar.gz /usr/local/src 101 102 #RUN 103 RUN yum -y install wget gcc gcc-c++ make openssl-devel 104 RUN useradd -s /sbin/nologin -M www 105 106 #WORKDIR 107 WORKDIR /usr/local/src/nginx-1.9.3 108 109 #RUN 110 RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.37 && make && make install 111 112 RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf 113 114 ENV PATH=/usr/local/nginx/sbin:$PATH 115 EXPOSE 80 116 117 CMD ["nginx"] 118 运行Dockerfile 119 docker build -t nginx-file:v1 /opt/docker-file/nginx/ 120 其他命令 121 docker run -it --rm stree --cpu 1 122 --rm 容器运行完即可删除 123 --cpu 指定分多少颗CPU
所有评论(0)