docker搭建jenkins

简介: 自动化部署可以说是项目的必须,其中jenkins可以说是标配了。jenkins在持续集成、持续交付、持续部署方面做得都很好也就是常说的CI、CD。这篇文章就总结下使用docker来搭建jenkins的过程,并记录这中间踩过的坑,防止再踩,同时也为想要学习jenkins的同学提供一点借鉴。

前言:

自动化部署可以说是项目的必须,其中jenkins可以说是标配了。jenkins在持续集成、持续交付、持续部署方面做得都很好也就是常说的CI、CD。这篇文章就总结下使用docker来搭建jenkins的过程,并记录这中间踩过的坑,防止再踩,同时也为想要学习jenkins的同学提供一点借鉴。


一、搭建jenkins



使用docker搭建jenkins其实很简单,但是对于镜像的选择还是需要考虑的。jenkins官方推荐使用jenkinsci/blueocean这个镜像,请不要去直接下载jenkins的镜像,这个镜像不好用,建议使用官方推荐的镜像:jenkinsci/blueocean。这里笔者使用的是该镜像的1.24.1-bcc31d32159f这个版本,这个镜像的jenkins是2.2版本的,只不过镜像的tag不是2.2而已,这个不需要在意。同时这个镜像的jdk是1.8的,刚好适用。


1.使用docker安装jenkins


若是没有docker的话,可以参考这篇文章进行安装:centos7安装docker,下面是使用docker安装jenkins的过程。


1)执行命令:

# 下载jenkins镜像,这是官方推荐的镜像
docker pull jenkinsci/blueocean:1.24.1-bcc31d32159f
# 创建容器并启动
docker run -d -u root -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime --name MyJenkins jenkinsci/blueocean:1.24.1-bcc31d32159f


2)运行截图:

1d1f4e7bae7d40d9a3345d4b5c3be2a5.png


3)参数解释:

这块都是参数的解释,可以不看。笔者选择这个版本的原因是他的jdk是jdk8的,最新版的镜像的jdk是jdk11,而且这个镜像的jenkins版本也是2.X版是够用的。此外解释下docker run后面的参数:


参数-d:表示后台运行,容器不会因为退出而停止。


参数-u:表示以什么用户启动容器,这里是以root用户启动容器,这样后期操作容器不会出现权限不足的问题(笔者碰到过)。


参数-p:表示端口映射,冒号左边是宿主机端口,右边是容器端口。端口映射后访问宿主机这个端口就相当于访问容器的这个端口。


参数-v:表示文件/目录共享,专业来说叫数据卷。冒号左边是宿主机的目录,右边是容器目录,通过这种共享在容器启动后容器内的目录下的内容都会共享到宿主机的目录下,这样我们想要查询信息就会比较方便,就不需要再进入容器了。


参数–name:表示为容器起个名字,在容器比较多时使用名称可以很快的区分各个容器,注意这个参数是两个间隔符,不是一个。


2.查看jenkins容器是否正常启动


  • 1)执行命令
# 该命令可以查看所有容器的大致信息
docker ps -a


2)运行截图

1a952dedc2764858aefe317baa2f5ed2.png


3)参数解释

这里执行的命令很简单,就是一个查看容器信息的ps命令,与linux中的ps差不多。那就解释下8080端口和50000端口吧。8080端口是管理控制台的端口,我们访问jenkins的控制台页面就是通过这个端口。至于50000端口也是必须的,50000端口是jnpl的端口,这要从jenkins是java实现的说起,我们可能会发现jenkins既然是java实现为什么安装jenkins后可以直接通过浏览器访问呢?而不需要tomcat等web服务器呢?这就是因为jnlp。jnlp可以让java程序直接通过浏览器来进行访问,就是访问web服务器一样。而这个50000端口就是因为这个开的。


3.查看jenkins的初始密码


  • 1)执行命令
# 创建完容器后可以使用这个命令查看初始密码
docker logs 容器名/id
# 若是隔了很久,用上面的命令可能看不到密码信息,我们还可以直接使用这个命令查看
cat /var/jenkins_home/secrets/initialAdminPassword


2)运行截图

543a623a5dd448f5947dd943ff1c93b2.png


3)参数解释
这两个命令都是用于查看初始密码的,好像也没有刻意解释什么的。


4.登录jenkins的管理页面


1)输入ip:8080登录页面
然后就会进入到如下页面,在输入框中输入刚刚看到的初始密码,然后稍许等待即可。


614f90b130874863b5366f5abec45453.png


2)选择推荐插件

安装插件时可能有一部分会失败,大部分情况都会全部成功。若有部分失败,也基本无影响,请忽略他(笔者多次安装都失败了7个左右,并不影响正常使用,因为部分插件我们也用不到)。


a5ec45ea15234693a0702288e8026363.png


3)创建初始用户

这里用户名密码啥的自己随便填就行,别忘了就行。然后就一直下一步就行,最后jenkins会自动重启,重启完成后我们就可以进入jenkins的管理页面了。

9702fa9c5e4148d4867d1ae562eb7b3b.png


5.安装必须的插件


其实到jenkins我们已经安装完成了,只需要在安装一些需要使用的插件就可以正常使用了。这里笔者安装三个插件maven、gitee、Post build task。其中maven用来打包程序、gitee是因为笔者代码在gitee上,需要从gitee上拉取代码,Post build task这个插件是用来打包完成后部署服务执行shell脚本使用的。安装插件有两种途径一种是在“全局配置工具”中安装,一种是在“插件管理”中安装,这里笔者会两个地方都使用。


1)安装maven

这里在“全局配置工具”中安装maven。


616f697758cf4e4e9196e31236936e85.png


然后我们找到配置maven的地方进行如下配置即可,其中maven版本自己选择即可。配置完成后先点击“应用”按钮,再点击保存即可。

ba02fd70125348b2aa9165aa6f82d960.png


2)安装gitee

这里从“插件管理”中安装gitee。


b8b30e8b4cf743a28b9c2bf4ff730eed.png


进入到“插件管理”后,在“可选插件”一栏搜索gitee然后点击直接安装即可。

a5da87f97e3f44be855075848b928036.png


然后等待安装完成即可,这里基本不会失败的。安装完成后先不要重启jenkins,等我们装完所有插件后再进行重启jenkins。


3)安装Post build task
这个插件和gitee的安装没什么区别,如下图所示


313a4528a1d84f6a8c5f5129e5b990f1.png


待安装完成后,勾选如下按钮,让jenkins空闲时间进行重启来使插件生效,事实上只要jenkins没有在打包和部署就是空闲时间,所以勾选就会立马重启jenkins。

e35847fdbb3a46c6a92d40a91ab08c49.png


二、总结安装



这样其实jenkins就装完了,也配置完了,整个安装过程其实不难,对于初次使用jenkins的同学来说困难的可能就是选择插件的问题。这里总结下插件,其实总共需要的有JDK、Git/Gitee、Maven、Postbuild task这些。JDK容器自带了,而且都是配置好的,所以在jenkins页面里我们无需多余一次配置。Git也是自带的,若是使用的Gitee则需要重新安装插件,也是安装即可,安装完成后无需在“全局配置管理”中进行配置。同样的Maven、Post build task都是安装完毕即可,无需其他配置。安装完成后下面就是需要进行搭建持续集成、持续交付、持续部署的环境了。


相关文章
|
4月前
|
jenkins 持续交付 开发者
自动化部署:使用Jenkins和Docker实现持续集成与交付
【8月更文挑战第31天】本文旨在为读者揭示如何通过Jenkins和Docker实现自动化部署,从而加速软件开发流程。我们将从基础概念讲起,逐步深入到实际操作,确保即使是初学者也能跟上步伐。文章将提供详细的步骤说明和代码示例,帮助读者理解并应用这些工具来优化他们的工作流程。
|
2月前
|
监控 jenkins 持续交付
Docker和Jenkins有什么不同
【10月更文挑战第18天】Docker和Jenkins有什么不同
|
2月前
|
Java jenkins 持续交付
Centos7下docker的jenkins下载并配置jdk与maven
通过上述步骤,您将成功在CentOS 7上的Docker容器中部署了Jenkins,并配置好了JDK与Maven,为持续集成和自动化构建打下了坚实基础。
129 1
|
2月前
|
运维 jenkins 持续交付
自动化部署的魅力:如何用Jenkins和Docker简化运维工作
【10月更文挑战第7天】在现代软件开发周期中,快速且高效的部署是至关重要的。本文将引导你理解如何使用Jenkins和Docker实现自动化部署,从而简化运维流程。我们将从基础概念开始,逐步深入到实战操作,让你轻松掌握这一强大的工具组合。通过这篇文章,你将学会如何利用这些工具来提升你的工作效率,并减少人为错误的可能性。
|
2月前
|
jenkins Java 持续交付
Docker搭建jenkins环境
这篇文章详细介绍了如何利用Docker搭建Jenkins环境,包括拉取Jenkins镜像、配置端口映射及初始化设置的步骤。
198 0
Docker搭建jenkins环境
|
2月前
|
Ubuntu jenkins 持续交付
Ubuntu系统 用docker安装jenkins
Ubuntu系统 用docker安装jenkins
|
4月前
|
JavaScript jenkins 持续交付
自动化部署与持续集成:使用Jenkins和Docker优化开发流程
【8月更文挑战第31天】在软件开发的世界里,时间就是一切。本文将引导你通过Jenkins和Docker的强大组合,实现自动化部署和持续集成,让你的开发流程如丝般顺滑。我们将从基础设置开始,逐步深入到构建管道,最终实现一键部署的梦想。准备好让你的开发效率飞跃,一起探索这个令人兴奋的旅程吧!
|
4月前
|
jenkins Shell 持续交付
自动化部署:使用Jenkins和Docker实现CI/CD
【8月更文挑战第31天】 本文旨在引导读者了解如何通过Jenkins和Docker来实现持续集成和持续部署(CI/CD),从而优化开发流程,提升工作效率。文章将详细介绍配置Jenkins服务器、创建Docker镜像以及设置自动化构建和部署的步骤。通过实际操作案例,我们将展示如何将代码变更快速部署到测试或生产环境,确保软件质量与发布速度的双重保障。
|
4月前
|
jenkins 持续交付 开发工具
Jenkins 与 Docker 集成的最佳实践
【8月更文第31天】随着容器技术的兴起,越来越多的团队开始采用 Docker 来构建和部署应用。Docker 提供了一种轻量级的虚拟化方法,使得应用可以在任何地方以相同的方式运行,这极大地提高了开发效率和部署的一致性。与此同时,Jenkins 作为一种广泛使用的持续集成/持续交付(CI/CD)工具,可以帮助团队自动化构建、测试和部署流程。本文将探讨如何将 Docker 与 Jenkins 集成,以简化开发环境的搭建和维护。
383 0
|
4月前
|
前端开发 jenkins 持续交付
jenkins学习笔记之二十:docker in docker运行pipeline
jenkins学习笔记之二十:docker in docker运行pipeline