声明:此技术文档仅供参考,并允许转发此博客。欢迎跟大家一起讨论技术 QQ:1747535503
1、软件简述:
Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
这里有一个误区,Docker 跟Jenkins 并没有直接的联系,Jenkins 是实现自动打包的,打包完也是可以实现自动部署的,并不是没有Docker 就不可以实现自动部署了,这里我需要强调一点。之所以用Docker,是因为Docker 是一个相比较而言比较成熟的一种技术了,而且他的优势在于,可以实现隔离,可以在不同的操作系统跑应用(Windows,Linux)并且还可以做到日志分离。
2、安装软件:
2.1、安装 Jenkins:
因为Jenkins 是java项目,所以需要安装可以运行java应用的环境,我这里使用Tomcat了(也可以用 jboss)。
下载tomcat 并安装(JDK的安装请自行百度)
[iyunv@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
[iyunv@zabbix src]# tar zxf apache-tomcat-9.0.0.M21.tar.gz
[iyunv@zabbix src]# mv apache-tomcat-9.0.0.M21 /usr/local/tomcat9
验证Tomcat 是否安装成功
[iyunv@zabbix src]# /usr/local/tomcat9/bin/version.sh
Using CATALINA_BASE: /usr/local/tomcat9
Using CATALINA_HOME: /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME: /usr/local/jdk1.8/jre
Using CLASSPATH: /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
Server version: Apache Tomcat/9.0.0.M21
Server built: May 4 2017 22:42:36 UTC
Server number: 9.0.0.0
OS Name: Linux
OS Version: 3.10.0-327.36.3.el7.x86_64
Architecture: amd64
JVM Version: 1.8.0_121-b13
JVM Vendor: Oracle Corporation
有了环境,我们就可以安装Jenkins了,就跟平时发布一样的步骤,这里我就不解释了吧!!!相信大神们都看不下去了
[iyunv@zabbix src]# wget http://mirrors.jenkins.io/war/latest/jenkins.war
[iyunv@zabbix src]# mv jenkins.war /usr/local/tomcat9/webapps/
[iyunv@zabbix src]# /usr/local/tomcat9/bin/startup.sh
[iyunv@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
查看自己的密码
[iyunv@zabbix logs]# cat /root/.jenkins/secrets/initialAdminPassword
cdf09c86f86e436189639cf5230aa09a
输完密码点击 Continue 按钮进行下一步
左边是默认安装,右边是自定义安装,本地实验不需要特殊需求,所以选择默认安装了。
附张正在装的图,页面还是蛮精美的
如果无法安装,就是你的网络有问题,自己先把网络搞定了在说吧!
安装完成后输入自己的用户名,密码等个人信息。然后Save and Finish一下,之后就可以启动Jenkins了
至此Jenkins 安装完成。
2.2、安装Docker
安装Docker 建议
( RedHat | Centos ) 7.0以上版本
[iyunv@zabbix logs]# yum -y install docker-io
[iyunv@zabbix logs]# docker version
Client:
Version: 1.12.6
API version: 1.24
Package version: docker-1.12.6-28.git1398f24.el7.centos.x86_64
Go version: go1.7.4
Git commit: 1398f24/1.12.6
Built: Fri May 26 17:28:18 2017
OS/Arch: linux/amd64
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
[iyunv@zabbix ~]# systemctl start docker
安装完毕,如果遇到不能安装的情况下,可以试下换yum源,我的腾讯云的服务器,所以用的是腾讯的yum源
2.3、安装 maven
因为项目中使用到了maven 所以需要把maven 融合到Jenkins 里面去
[iyunv@zabbix src]# wget http://apache.fayea.com/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz
[iyunv@zabbix src]# tar zxf apache-maven-3.5.0-bin.tar.gz
[iyunv@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
[iyunv@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 做个朋友认识下,谢谢!
Docker 命令集
寻找网络镜像命令
docker search centos
[iyunv@test ~]# docker search centos
名字 描述 下载次数 是否官方 是否是Dockerfile构建的
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMAT
docker.io docker.io/centos The official build of CentOS. 3301 [OK]
下载镜像
docker pull centos
查看镜像
docker images
删除镜像
docker rmi
容器命令
启动容器
docker run --name -h hostname
启动容器2
docker start CONTAINER ID
停止容器
docker stop CONTAINER ID
查看容器
docker ps -a
进入容器
docker exec | docker attach
删除容器
docker rm
进入后台运行容器
docker attach 68e5c66ee5c9 退出自动停止运行容器
进入容器
docker run --name mydocker -it docker.io/centos /bin/bash
-d 进入后台运行
--run 运行
--name 指定名字
-i 输入终端打开
-t 开一个伪终端
进入容器不退出
1、进入容器
docker run --name mydocker -it docker.io/centos /bin/bash
2、退出
3、启动容器
docker ps -a查询ID号
docker start ID号
4、获取Pid号
docker inspect --format "{{.State.Pid}}" 68e5c66ee5c9
5、进入容器而不退出
nsenter --target 19205 --mount --uts --ipc --net --pid 退出不停止运行容器
如果没有这个命令,需要安装util-linux包 nsenter
6、懒人写法
nsenter --target `docker inspect --format "{{.State.Pid}}" ID` --mount --uts --ipc --net --pid
docker 网络访问
docker run -P
-P 随机映射
-p hostport:containerPort
-p ip:hostPort:containerPort
-p ip::containerPort
-p hostPort:containerPort
-p hostPort:containerPort
数据卷管理
docker
-v /data
-v /src:/dsrc
-v /src:/src:ro
容器的制作
docker commit -m "my nginx" f443e801f545 shijia/my-nginx:v1
Docker file 的方式构建docker镜像
FROM 他的妈妈是谁(基础镜像)
MAINTAINER 告诉被人,你创造了他(维护者信息)
RUN 你想让他干啥(把命令前面加上RUN)
ADD 相当于cp命令(COPY文件,会自动解压)
WORKDIR 相当于cd命令(当前工作目录)
VOLUME 给我一个放行李的地方(目录挂载)
EXPOSE 我要打开的门是啥(端口)
RUN 奔跑吧,兄弟!(进程要一直运行下去)
Docker 案例
vim /opt/docker-file/nginx/Dockerfile
# This is My first Dockerfile
# Version 1.0
# Author : Shijia Zhang
#Base images
FROM centos
#MAINTAINER
MAINTAINER ShiJia Zhang
#ADD
ADD pcre-8.37.tar.gz /usr/local/src
ADD nginx-1.9.3.tar.gz /usr/local/src
#RUN
RUN yum -y install wget gcc gcc-c++ make openssl-devel
RUN useradd -s /sbin/nologin -M www
#WORKDIR
WORKDIR /usr/local/src/nginx-1.9.3
#RUN
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
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
ENV PATH=/usr/local/nginx/sbin:$PATH
EXPOSE 80
CMD ["nginx"]
运行Dockerfile
docker build -t nginx-file:v1 /opt/docker-file/nginx/
其他命令
docker run -it --rm stree --cpu 1
--rm 容器运行完即可删除
--cpu 指定分多少颗CPU
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com