使用docker运行jenkins期间遇到的问题及解决过程

本文主要是记录学习官网示例教程构建多分支流水线项目期间遇到的问题。
大部分问题其实都是因为在windows下导致的,如果不需要docker容器调用宿主机docker的话,那么windows下的docker desktop其实没啥问题,但是jenkins官网示例中就需要这样操作,导致在windows下确实没法弄,所以后续转ubuntu实践了。

问题1

一开始是按照官网示例教程拉取的jenkinsci/blueocean,但这个镜像其实已经好久没更新了,可能是这个原因,所以我这里跑的示例在下载推荐插件时魔法也下不下来,跳过后还总会莫名其妙的崩溃。
后续我直接用他们最新的jenkins/jenkins镜像,然后推荐插件魔法下载完毕后,再在管理插件里面下载blue ocean

问题2

blue oceanUI创建多分支流水项目时有时会找不到对应的jenkins文件,明明文件夹下面就是明晃晃的Jenkins文件却就是视而不见… 后面是用经典构建模式去创建解决此问题的,
在这里插入图片描述

问题3

还有就是创建多分支流水项目时,本地项目有安全限制导致无法创建成功,
在这里插入图片描述

临时解决方法(无需重启)​:
访问 ​Jenkins 管理界面 → ​Script Console。
执行脚本命令:

System.setProperty("hudson.plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT", "true")

这样处理后按照经典创建方式可以成功创建,但是打开blue ocean里面就是显示不成功,可能是缓存或者版本不兼容问题,所以后续在重新创建新的容器时增加参数,

永久解决方法 最终blueocean可以正常使用的docker命令:

docker run -u root -e JAVA_OPTS="-Dhudson.plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT=true" -p 8080:8080 -p 50000:50000 --name de
mo -v F:\Docker\resources\file:/home -v /var/run/docker.sock:/var/run/docker.sock -v F:\Docker\resources\file\jenkins:/var/jenkins_home jenkins/
jenkins

其中xxx和xxx2分别是放git仓库和jenkins相关信息存储位置的本地映射文件夹
最终成功效果

问题4

然后遇到了新的问题,docker容器内部调用宿主机docker权限不够,加了root权限不行,加了-v /usr/bin/docker:/usr/bin/docker不行,加了--privileged=true也不行,

问题5->4

原本打算本地部署的,然后期间又遇到了无法识别jenkinsfile中的docker字符,插件也安装了,找了半天问题发现是空间不够节点挂掉了。 job执行转圈的问题–也是磁盘剩余位置不足,清空间或者降低设置阈值保证节点能运行。折腾半天终于能docker pull了,发现这个教程流程本意就是要通过docker容器中的jenkins实现多分支流水,,,折腾半天白作功。

现在又回到了 docker: Permission denied的问题,猜测大概是windows系统wsl2下的用户名没办法完全对上root导致的,搞docker还是有一些奇奇怪怪的地方没办法完全和linux下一致,我都privileged了还是不行,

  • 把windows映射的文件去掉也还是不行
  • 别的镜像创建的实例也还是docker permission denied

后续想法: 直接在linux系统上跑docker看看行不行

通过配置docker代理,搞了半天魔法终于成功pull!然后进行测试,果然linux下是可以的!
最终容器生成命令

sudo docker run -u root --name demo --privileged -e JAVA_OPTS="-Dhudson.plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT=true" -p 8080:8080 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v "$HOME":/home -v /usr/bin/docker:/usr/bin/docker jenkins/jenkins

问题6

npm build失败Unsupported URL Type: npm:string-width@^4.2.0
好像是npm版本过旧,把jenkins文件中npm后面的:6-alpine去掉
成功执行完毕

在这里插入图片描述

后续结果展示

master分支下的执行过程:
master分之下其他分支拉取master分支后的执行流程:
在这里插入图片描述网页demo效果图
在这里插入图片描述执行过程
在这里插入图片描述

经验教训

docker是个好东西,前提是在linux下,在windows下真的是个阉割品,,反省一下自己,想偷懒省事点走捷径,从一开始的不想用linux系统凑乎用windows下的docker desktop,到docker容器jenkins安装插件映射到本地后为了省事不想再重安装于是直接用,,结果兜兜转转搞了半天还是走了最长的弯路。所以我偷懒省事了半天还不如一开始就老老实实在ubuntu下跑一遍,当然jenkins官方给的用例也是有问题的,太老了现在按原步骤走必定坎坷。类推到人生也是一样,走了半天捷径发现还不如老老实实按最稳妥的路走,慢就是快。毕竟像我这种运气差的人,另辟蹊径多半踩坑,这辈子运气也不知道能不能好起来了。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值