【Docker实战】jenkins卡在编译Dockerfile的问题

news2025/1/21 18:44:10
我们的项目是标准的CI/CD流程,也即是Gitlab+Jenkins+Harbor+Docker的容器自动化部署。
经历了上上周的docker灾难,上周的服务器磁盘空间灾难,这次又发生了jenkins卡住的灾难。
当然,这些灾难有一定的连锁反应,是先发生的docker灾难,然后因为要测试,导致镜像堆满服务器磁盘空间,磁盘空间满,又导致了jenkins卡住的问题。下面将我的解决过程记录下来,希望可以帮到可能会发生同样发生问题的大家。

图1

如上图所示,jenkins的121号版本编译成功之后,修改了几行代码,传到gitlab后,用jenkins进行编译。结果报错,jenkins报错的信息(Console Output)如下:

这是将镜像推送到镜像仓库Harbor发生的问题。

因为之前我观察到Harbor所在阿里云服务器磁盘使用率已达到92%,因此首先查看该服务器的情况。一看不得了,磁盘使用率已是100%。我删除了很多过期镜像,也删除了服务器本地拉取的一些镜像,但磁盘空间没变化,于是花了一些时间解决了这个问题(【docker&linux实战】阿里云服务器磁盘空间满了 – 经云的清净小站 (skycreator.top))。

就在我大呼万岁,准备开庆功宴的时刻,jenkins编译一直进行中。正常只需十几分钟就可以正常部署,这次花了半小时也没打包成功(见下图#123)。我又试了一次,这次1h 38min也没完成(下图#124)。

我打开#123和#124的Console Output,发现jenkins卡在了load build definition from Dockerfile这一行。

我一个游戏程序员,对于jenkins的操作不熟悉啊。于是有病乱投医,我进行了下面一系列的弯弯绕绕的操作。

1.docker版本问题

首先,我怀疑可能和docker版本有关。阿里云上三个服务器的docker版本都是1.24,而我本地windows上是1.26。本地windows上的这个项目docker build可以正常通过,而linux上不能通过,因此自然想到可能是docker的问题。

我们的服务器分为s1,s2,s3。其中s1是项目server,s2是gm后台server,s3是gitlab、Harbor、jenkins所在的server。因为是打包gm后台server,因此,我选择s2升级docker。

升级前先删除旧版本的docker,删除后更新不到新docker了。是的,太郁闷了!旧问题没解决,又产生了新问题。

曾经使用yum安装docker的路子走不通了。难道docker也下载不了了?我有些绝望,甚至想到了将安装包本地下载,再将它拷贝到阿里云上。

幸好,网上找到dnf的安装方法,成功升级了docker。

进入jenkins,再次编译,依然不通过。该方法失败!

2.配置检查

上一个问题无果后,我又想到了可能是docker的配置问题,或许该服务器没有设置私有仓库呢?

打开/etc/docker/daemon.json,里面确实设置了。

查看jenkins的pipeline,将项目server和gm后台server相互对比,也是没区别。

3.代码回退

#123的版本,我提交了一些代码,不会是提交的代码导致卡住吧?

虽然我的内心不认为会是这个原因,但试一试万一成功了呢?

于是,我使用git回退了代码(这里又复习了一下git的回退操作),再次编译,还是卡住。

4.新建任务

既然是jenkins的卡住,我怀疑可能是jenkins的这个任务有问题。于是我新建了一个jenkins任务,复制了gm后台的pipeline。

再次编译,依然故我!

5.改变焦点

由于对jenkins不熟,对于jenkins的docker build一知半解。这次我重新看了看jenkins的pipeline。

// 1.从gitlab上取代码
// 2.镜像编译
sh 'echo 镜像名称:${image_server_gm_server} && docker build -f ./server/Dockerfile -t ${image_server_gm_server} ./server'
sh 'echo 镜像名称:${image_server_gm_web} && docker build -f ./web/Dockerfile -t ${image_server_gm_web} ./web'
// 3.登陆Harbor,向Harbor推送镜像
// 4.登陆gm服务器,从私有仓库拉取镜像

从上下文来看,gitlab上取了代码后,对代码进行了镜像编译。这时,还没登陆镜像仓库,也没有登陆gm服务器。那么代码应该存放于jenkins所在s3服务器,而不是s2啊。

我尝试寻找代码所在位置,在jenkins所在目录的jenkins_home/workspace找到了jenkins的相关任务,任务中即是代码。于是我进入相应文件夹,使用docker build进行编译打包。

卡住了。问题找到了。估计是由于之前磁盘空间满,docker内部某个逻辑没走通,一直卡住,因此只要重启docker,估计问题就能解决。

不过这个s3的docker版本较低,顺便先升级吧。按照之前的操作,升级s3服务器的docker到最新。然后重启docker,再次编译,问题解决,如下图所示:

直接ctrl+c关掉。从浏览器进入jenkins,执行任务编译。成功!

这次虽然解决了问题,但中间弯弯绕绕浪费了好久。若是对jenkins充分了解,时间上可以更快。

这次特别感谢d u x t,他给我提出了不少新思路,让我思路开阔了很多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1837644.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024 端午节巽寮湾游玩记录

2024 端午节巽寮湾游玩记录 文章目录 2024 端午节巽寮湾游玩记录一、前言二、巽寮湾游玩行程1、三天衣食住行2、主要图片: 三、其他1、小结2、巽寮湾游玩建议3、感慨 一、前言 时间总是过得很快,只要你活着时间就会不停往前走。 所以你以后的路其实都是…

【机器学习】 第1章 概述

一、概念 1.机器学习是一种通过先验信息来提升模型能力的方式。 即从数据中产生“模型”( model )的算法,然后对新的数据集进行预测。 2.数据集(Dataset):所有数据的集合称为数据集。 训练集:用来训练出一个适合模…

Maven添加reactor依赖失败

目录 情况说明 解决过程 情况说明 起初是自己在学spring boot3&#xff0c;结果到了reactor这一部分的时候&#xff0c;在项目的pom.xml文件中添加下列依赖报错&#xff1a; <dependencyManagement><dependencies><dependency><groupId>io.projectr…

“Git掌控:分布式版本控制系统解析“

目录 # Git基础 1. Git下载 2. Git三种程序命令 2.1 Git Bash基本命令 2.2 Git更新项目命令 3. Git配置 3.1 设置用户名&#xff08;EE配置&#xff09; 3.2 查看用户名信息 4. Git基本理论 5. Git项目搭建 5.1 克隆远程仓库 5.2 指定本地克隆的目录 6. Git文件操…

【硬件开发】自举电路

为什么需要自举电路 半桥驱动电路中&#xff0c;下桥臂的源极直接接地&#xff0c;导通时栅极电压只需要达到MOS管导通d电压Vgs&#xff0c;但是对于上桥臂来说&#xff0c;上桥臂的源极电压会随着上桥臂的导通而抬升到VDD&#xff0c;对应想要导通时的栅极电压Vgs要到达VgsVDD…

代码随想录第20天|二叉树

654.最大二叉树 构造二叉树: 使用前序遍历 已理解思路 617.合并二叉树 虽然开辟额外空间, 但结果依旧受到原来的数影响(当为null时直接借用了原来数的节点) class Solution { public:TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {if (root1 nullptr) return roo…

ubuntu20.04配置anaconda

1.anaconda下载 地址&#xff1a;Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 选择&#xff1a;Anaconda3-2023.07-2-Linux-x86_64.sh 2.anaconda安装 选择下载目录&#xff0c;选在在终端中打开&#xff0c;然后在终端输入安装命令…

【漏洞复现】海康威视 综合安防管理平台 session接口 远程代码执行漏洞

免责声明&#xff1a; 本文内容旨在提供有关特定漏洞或安全漏洞的信息&#xff0c;以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步&#xff0c;并非出于任何恶意目的。阅读者应该明白&#xff0c;在利用本文提到的漏洞信息或进行相关测…

关机充电动画:流程与定制

关机充电动画&#xff1a;流程与定制 基于MTK平台Android 11分析 生成logo.bin 关机充电动画是由一系列的bmp图片组成的&#xff0c;这些图片资源存在于vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo目录下&#xff08;当然不仅保护关机充电动画&#xff0c…

北漂新媒体从业者的一天

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 本文纯属虚构 小李通过努力考上了一所北京的大学&#xff0c;毕业后就留在了北京&#xff0c;做新媒体运营&#xff0c;在天通苑租了一个单间&#xff0c;月租2500&#xff0c;业余时间做自媒体&#xff0c;也算是…

vue element-ui 车牌号选择组件

实现效果 carnumber.vue <template><div class"car_no_popover"><div class"row_div"><div class"every_div" v-for"item in area"><button click"selectCarNo(item)">{{ item }}</butto…

如何编辑扫描的 PDF 文档

无论您从事哪个行业&#xff08;医疗保健、房地产、现场服务管理或金融服务&#xff09;&#xff0c;您都很有可能使用在线表格和调查来培训员工、收集客户反馈、授权付款和注册活动参与者。使用合适的软件&#xff0c;这些表格很容易创建、编辑和填写。此外&#xff0c;您还可…

【文献阅读】Partially Adaptive Array Techniques

Abstract 文章研究了在多窄带干扰环境下&#xff0c;辅助阵元的选择&#xff0c;为部分自适应天线阵&#xff0c;以达到性能优化的目的。推导了双干扰问题的显式解。这个案例足以说明多个干扰的相互作用&#xff0c;同时也为更复杂的问题提供了一定程度的理解。本文还提出并讨…

如何为自己的项目生成changelog

背景 在github上看到人家的更新日志感觉很cool&#xff0c;怎么能给自己项目来一套呢 环境信息 tdstdsdeMacBook-Pro demo-doc % node -v v14.18.1 tdstdsdeMacBook-Pro demo-doc % npm -v 6.14.15硬件信息 型号名称&#xff1a;MacBook Pro版本&#xff1a; 12.6.9芯片&…

nginx反向代理动静分离和负载均衡

一.nginx 反向代理简要介绍 1.什么是反向代理 反向代理是一种服务器&#xff0c;在这种设置中&#xff0c;代理服务器接收客户端的请求&#xff0c;并将这些请求转发给一个或多个后端服务器&#xff08;例如应用服务器、数据库服务器等&#xff09;。然后&#xff0c;后端服务…

Transformer预测 | 基于Transformer+LSTM股票价格预测时间序列预测(Pytorch)

效果一览 基本介绍 股票行情是引导交易市场变化的一大重要因素,若能够掌握股票行情的走势,则对于个人和企业的投资都有巨大的帮助。然而,股票走势会受到多方因素的影响,因此难以从影响因素入手定量地进行衡量。但如今,借助于机器学习,可以通过搭建网络,学习一定规模的股…

Unity URP下通过相机让部分Render不受后处理渲染

我们有时候不想某些对象受到后处理影响&#xff0c;找到了这样一个决绝办法&#xff0c;通过增加一个Overlay相机只照射这个模型来实现&#xff0c;下面看看如何实现。 第一步 首先我们拖一个测试场景&#xff0c;有如下一些元素 一个盒子&#xff0c;以后后处理&#xff0c…

海思SS928/SD3403开发笔记1——使用串口调试开发板

该板子使用串口可以调试&#xff0c;下面是win11 调试 该板子步骤 1、给板子接入鼠标、键盘、usb转串口 2、下载SecureCRT&#xff0c;并科学使用 下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/11dIkZVstvHQUhE8uS1YO0Q 提取码&#xff1a;vinv 3、安装c…

计算机毕业设计Python+Flask弹幕情感分析 B站视频数据可视化 B站爬虫 机器学习 深度学习 人工智能 NLP文本分类 数据可视化 大数据毕业设计

首先安装需要的python库&#xff0c; 安装完之后利用navicat导入数据库文件bili100.sql到mysql中&#xff0c; 再在pycharm编译器中连接mysql数据库&#xff0c;并在设置文件中将密码修改成你的数据库密码。最后运行app.py&#xff0c;打开链接&#xff0c;即可运行。 B站爬虫数…

Springboot整合Kafka消息队列服务实例

一、Kafka相关概念 1、关于Kafka的描述 Kafka是由Apache开源&#xff0c;具有分布式、分区的、多副本的、多订阅者&#xff0c;基于Zookeeper协调的分布式处理平台&#xff0c;由Scala和Java语言编写。通常用来搜集用户在应用服务中产生的动作日志数据&#xff0c;并高速的处…