前因后果

今天维护jenkins的时候手欠了下,点了升级,然后我们的jenkins是放在 docker 里面的,重启就发现提示这个

好家伙,最低要求都jdk11了,本来还打算jdk8再战十年的,别卷了

本来准备下载个jdk11, 覆盖下完事,准备升级下jdk的我发现问题没有这么简单,问题就出在容器这里,容器的状态是一直重启,我这也没办法进到容器里面改文件啊

Jenkins 的 Enrtypoint 如下,jdk 版本不合适会导致主进程无法启动,结果就是容器不能正常启动

改jdk才能打开容器,打开容器才能修改jdk。好家伙,死锁了是吧。

然后这个jdk目录我还没挂载到宿主机,就很难受了

方案一 docker cp(无效)

经过查阅资料,发现 docker cp 是可以无视容器状态

查看下 容器的环境变量

应该就是这里了

下载完jdk

# 把 openjdk 复制过来
docker cp jenkins:/opt/java/openjdk ./
# 替换这里的 openjdk 文件夹(哈哈,我还偷笑了好久,偷梁换柱我可太会了,毕竟容器里不能改环境变量,那就换个马甲就完事了)
docker cp ./openjdk jenkins:/opt/java/openjdk

结果发现不能解决问题,纳尼???

其实我这里一直在纠结一个点,就是 docker cp 能否直接替换文件夹,答案是否定的,这里附上 docker cp 的处理策略

再次把容器里面的 openjdk 挂载到宿主机,用 ./bin/java -version 检查,不出所料 容器里面的还是 jdk8

方案2 find 模糊搜索

这里其实还踩了个坑,就是对 docker 的文件管理不熟悉,导致这块很难受,后面会补上

这块是 查看的容器信息,找了下 mergedDir 结果发现不存在,害,基础不牢,地动山摇啊,流下了没文化的眼泪

既然找不到具体路径,但是我敢肯定,文件肯定是在 /var/ib/docker 里面的

所以我直接模糊搜索是不是就ok了

find /var/lib/docker --name "/opt/jdk/openjdk"
# 结果如下 我这里也是混的,我就把第一个 文件夹下面的替换掉了,然后就解决了
/var/lib/docker/overlay2/063b8b4357c9e02b09a77851650962e15f17e6c9d45a5cc937c201c5677aab46/diff/opt/java/openjdk
/var/lib/docker/overlay2/d3a7db93a3ecee188ecd87a1805f40b7a0ab86bf59c4cccd4ee5624a126afef2/diff/opt/java/openjdk
/var/lib/docker/overlay2/988773a3b7ee3bcc2bda52735623a6c3c1809aac5905c3f025b785e0ef53ea02/diff/opt/opt/java/openjdk

第二个坑 插件报错

现在容器是启动起来了,但是进首页还是报错,害,能起来就不慌了

也看不懂具体的是啥意思,但是可以确定是 githook 这个插件有缺少 ruby-runtime 的问题

查阅资料,进到 plugins 目录,删掉两个 文件就ok,gitlab-hook.jpi和ruby-runtime.jpi

删了重启,okk,打卡下班

总结

其实 容器化这个事情我一直是持存疑的态度的(小团队,个人意见),我这边其实还没遇到容器化才能解决的痛点问题,之前是完全容器化,包括mysql, redis, java, nginx等等,这些都是放在容器里面跑,后面发现不是分布式的项目,用容器其实不太必要,很大程度增加运维成本,后面一步步把容器方案替换掉了,还是用的传统的脚本的方案,jenkins也是如此

再就是暴露了对 docker 底层原理的匮乏,网络,进程,文件管理的理解都存在问题,当初是为了简单,一行指令就可以搭建起来一个环境,但其实给自己挖了很多坑,屏蔽了太多的细节,现在看来对一个我这个阶段的弱鸡没啥意义,当然我也有很多认识的同学去大厂专门做云原生的,另当别论,我这边主要还是做b端开发,我评估了下,k8s应该一年内都不太会用得上

后面我应该还是会深挖作为后端开发需要深挖的知识,mysql,并发,mq,redis这些,再就是一些简单的调优,应该是不会把这些放在容器里了,高可用目前的业务还用不到,容器解决特定问题只是一种载体,也没有必要去神化,好像2022年不谈容器,就很low,真没必要

TODO

jenkins 的备份与恢复

记录一次拯救jenkins的历程相关推荐

  1. 2016专接本c语言真题_专科三年记录+自己学习专接本历程

    专科三年记录+自己学习专接本的历程. 首先声明,本人专科学渣一枚,大一学习c语言,java.有幸大一暑假留校实习,大二就直接参加了工作,期间一直做项目开发,主要后端开发.大二我萌发了专接本的想法,问了 ...

  2. 书籍记录了我技术的成长历程

    看到了有奖征文的内容,觉得内容很好,很想把自己读过的技术书籍整理一下,给自己的技术类图书梳理一下思绪,觉得是一件很值得做的事情,花了一点时间整理了下,与各位博友分享: CS开发: 1.C#入门经典(第 ...

  3. 本人机械专业研究生,研一暑假开始正式接触深度学习相关内容,想通过写文章记录以及分享下学习的历程,让大家可以避免坑以及记录下自己成长的过程。今天是第一天,安装opencv包出现的问题。

    1.一开始安装根据视频安装出现版本不匹配的情况,看了别人是怎么解决的一直找不到合适的,之后根据安装提示更新了pip(辅助安装工具)的版本如下 python -m pip install --upgra ...

  4. 【python】记录下自学python的大致历程

    写这篇文章,起因是有一个学长最近问到我相关的问题.回想起我当初开始自学这门语言,以及到现在需要考虑使用一些高级用法时觉得最有效的一些工作吧. 1.初学 第一次学习python,是我即将研究生入学的暑假 ...

  5. 打怪升级记录(2018-2019)

    以下都是工作生活中的记忆随笔与感悟,估计从2018年初着手写的,会持续更新...(20191218) emmmm 代码1->2级记录 1.写代码不能炫技,要怎么方便怎么清晰怎么来: 2.程序注意 ...

  6. Spring Cloud【使用jenkins持续部署】Gogs+jenkins+Docker Swarm+Protainer

    导读: 很久没有更新文章了 最近公司在使用Spring Cloud构建的项目中经常会持续发布变更频繁,一天中会出现发布多次的情况 在这种情况下对测试环境做了改造 使得开发人员可以不再过多关注发布与更新 ...

  7. 2020年末总结,脚踏实地,一步一个脚印——致敬自己一年的心酸历程

    摘要:恰逢官方征文,谨以此篇记录自己一年的心酸历程与前端知识的感悟. 目录 在时代工场的主要工作 我为什么从时代工场离职?

  8. 【原】Jenkins持续集成环境搭建之创建java项目的job【centos6.5 java maven git 项目】...

    一.构建一个maven项目 在jenkins主页上,左侧,选择"新建",然后填写项目名称,选择"构建一个maven项目" 二.Git配置 保存之后,进入详细配置 ...

  9. jenkins 下载插件 一直失败_实用测试技能分享:jmeter+Jenkins性能测试自动化搭建...

    这阶段有幸接手了公司新产品的测试,所以一直都很忙.后台收到一些同学的私信,想多了解下性能测试,正好闲暇之余,终于有时间总结了一些性能测试实践经验和测试过程,就跟大家聊一聊. 性能测试用来保证产品发布后 ...

最新文章

  1. 自制ACL+DHCP实验(初版)
  2. freeimage ubuntu安装
  3. php返回图片给安卓_android上传图片到PHP的过程详解
  4. svn 文件状态标记含义
  5. 计算机视觉与模式识别(1)—— A4纸边缘提取
  6. npm ERR! Unexpected end of JSON input while parsing near '...on:0.10.3,direc to'
  7. CentOS 7 安装 Python 3.6
  8. python中pep8规范_Python PEP8规范
  9. Jenkins构建风格自由的项目
  10. 自动驾驶1-7: 进入自动驾驶汽车行业的建议Advice for Breaking into the Self-Driving Cars Industry
  11. 读python学习手册
  12. 强化学习——表格法 Tabular Methods
  13. 小程序云开发表单提交并在页面中获取数据
  14. 打造企业云三级火箭,EasyStack未来五年计划凸显雄心壮志
  15. Kubernetes Ingress
  16. ASCII与Unicode编码消息写文件浅析
  17. 聚观早报|苹果默认不再接受隔空投送;Mete被裁员工将获薪水补偿
  18. 程序员更容易生女孩子,是不是真的?
  19. 极致Review,阿里绩效管理的核心工具
  20. 39. 腾讯面试题:有一千万条短信,有重复,以文本文件的形式保存,一行一条,有重复。

热门文章

  1. web前端涉及到的软件
  2. html5如何创建按钮button
  3. Eclipse中建多层级包时出现的问题
  4. Zeppelin使用JDBC连接MySQL
  5. 路由追踪——traceroute与tracert
  6. 中职计算机教师招聘试题库,职业技术学校教师考试题目
  7. 26套Java实战项目大合集
  8. 18生成和解析JSON
  9. CentOS5.5下TOMCAT6快速yum安装
  10. 【转】iOS弹幕库OCBarrage-如何hold住每秒5000条巨量弹幕