一、简介
1)docker是当前流行的容器技术,通过docker技术可以实现快速的部署常见的服务。
2)jenkins是当前主流的持续集成的工具和框架(CI),通过jenkins可以实现项目的智能化构建和测试。
二、jenkins的部署方式
传统的部署方式是下载jenkins.war包,并放置于tomcat容器中执行即可,但是这种方式相对比较繁杂,需要提前下载tomcat和jenkins等,并将jenkins.war包放置于tomcat下的webapps文件夹下,管理起来很麻烦。
这里我们介绍的是通过docker技术实现jenkins的快速部署和启动。
三、准备工作
1、准备一台linux服务器
2、linux服务器上已经安装好jdk和maven运行环境
3、linux服务器上已经安装好docker引擎服务(具体安装方式见官网链接: https://docs.docker.com/engine/install/centos/.)
四、下载jenkins镜像并运行容器
1)dockerhub中jenkins官方镜像信息
2)linux服务器中执行docker pull jenkins/jenkins:lts
拉取下载最新的jenkins镜像,下载完毕执行docker images
可以查看下载到linux本地的镜像信息
3)创建并运行容器(这一步是非常关键的一步),运行命令
docker run -d --name jenkins -v jenkins_home:/var/jenkins_home -v /usr/local/jdk1.8.0:/usr/local/jdk1.8.0 -v /usr/local/maven3.6.3:/usr/local/maven3.6.3 -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts
docker命令解释:
-d:后台运行
–name:容器名称,自定义
-v jenkins_home:/var/jenkins_home:将jenkins容器中的核心数据/var/jenkins_home映射到linux本地的jenkins_home目录下,这样做的目的是防止重启jenkins容器清空掉所有核心数据,“:”前面是linux本地环境,后面是jenkins容器内部的路径
-v /usr/local/jdk1.8.0:/usr/local/jdk1.8.0:将linux服务器的java环境映射到jenkins容器内部环境中
-v /usr/local/maven3.6.3:/usr/local/maven3.6.3:将linux服务器的maven环境映射到jenkins容器内部环境中
-p:端口,linux端口:容器内端口
jenkins/jenkins:lts:镜像名称
4)查看运行后的容器,执行命令:docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
53fa7uuaaaa2 jenkins/jenkins:lts "/sbin/tini -- /usr/…" 11 days ago Up 11 days 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp jenkins
此时可以看到容器已经运行起来啦,直接访问http://localhost:8080(localhost换成你linux服务器的公网ip)即可访问到jenkins页面,然后进行后续的详细设置,是不是很方便快捷?
5)查看挂载卷,执行命令:docker volume ls
即可查看本地挂载卷的情况,也就是前面运行容器时设置的-v选项对应值,jenkins_home是本地挂载卷,它映射的是jenkins容器内部的/var/jenkins_home目录,修改挂载卷中的数据,会同步到容器内部;当容器停掉、重启或删除后,数据会保存到本地jenkins_home卷中,不会丢失,否则容器的重启、删除会导致容器内的数据全部丢失。
[root@RestAssuredDemo]# docker volume ls
DRIVER VOLUME NAME
local jenkins_home
执行命令:docker volume inspect jenkins_home
可以查看jenkins_home数据卷的详细路径,进入该路径下即可查看到jenkins容器内部/var/jenkins_home路径下的相关数据。
[root@RestAssuredDemo]# docker volume inspect jenkins_home
[
{
"CreatedAt": "2021-04-12T14:48:08+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/jenkins_home/_data",
"Name": "jenkins_home",
"Options": null,
"Scope": "local"
}
]
6)进入容器内部的命令:执行命令:
[root@RestAssuredDemo]# docker exec -it 53fa2giboaaaa2 bash
jenkins@53fa2bfaaaa2:/$ ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
-it参数后面对应的是容器id,该命令可以进入容器内部环境;exit命令退出容器。
7)重启容器的命令:docker restart [容器名或容器id],即可重启jenkins服务
8)停止容器的命令:docker stop [容器名或容器id],可停掉jenkins服务。