当前位置: 首页 > news >正文

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

我们的项目是标准的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,他给我提出了不少新思路,让我思路开阔了很多。

相关文章:

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

我们的项目是标准的CI/CD流程,也即是GitlabJenkinsHarborDocker的容器自动化部署。 经历了上上周的docker灾难,上周的服务器磁盘空间灾难,这次又发生了jenkins卡住的灾难。 当然,这些灾难有一定的连锁反应,是先发生的d…...

rust 多线程分发数据

use std::sync::{Arc, Mutex}; use std::collections::VecDeque; use std::thread::{self, sleep}; use rand::Rng; use std::time::Duration;fn main() {let list: Arc<Mutex<VecDeque<String>>> Arc::new(Mutex::new(VecDeque::new()));// 创建修改线程le…...

CentOS 7x 使用Docker 安装oracle11g完整方法

1.安装docker-ce 安装依赖的软件包 yum install -y yum-utils device-mapper-persistent-data lvm2添加Docker的阿里云yum源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo更新软件包索引 yum makecache fast查看docker…...

DDP算法之线性化和二次近似(Linearization and Quadratic Approximation)

DDP算法线性化和二次近似 在DDP算法中,第三步是线性化系统动力学方程和二次近似代价函数。这一步是关键,它使得DDP能够递归地处理非线性最优控制问题。通过线性化和二次近似,我们将复杂的非线性问题转换为一系列简单的线性二次问题,逐步逼近最优解。通过这些线性化和二次近…...

Shellcode详解

Shellcode详解 一、Shellcode的特点二、Shellcode的类型三、Shellcode的工作原理四、防御措施五、常见的PHP Web Shell示例5.1 简单的命令执行5.2 更复杂的Web Shell5.3 防御措施5.4 实际案例 Shellcode是一种小巧、紧凑的机器代码&#xff0c;通常用于利用软件漏洞或注入攻击中…...

sherpa-onnx说话人识别+语音识别自动开启(VAD)+语音识别Python API

专栏总目录 获取该开源项目的渠道,是我在b站上,看到了由csukuangfj制作的一套语音识别视频。以下地址均为csukuangfj在视频中提供,感谢分享! 新一代 Kaldi: 说话人识别+VAD+语音识别之 Python API_哔哩哔哩_bilibili 开源项目地址:GitHub - k2-fsa/sherpa-onnx: Speech-t…...

提取人脸——OpenCV

提取人脸 导入所需的库创建窗口显示原始图片显示检测到的人脸创建全局变量定义字体对象定义一个函数select_image定义了extract_faces函数设置按钮运行GUI主循环运行显示 导入所需的库 tkinter&#xff1a;用于创建图形用户界面。 filedialog&#xff1a;用于打开文件对话框。 …...

python数据可视化:在图形中添加注释matplotlib.pyplot.annotate()

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 python数据可视化&#xff1a; 在图形中添加注释 matplotlib.pyplot.annotate() 请问关于以下代码表述正确的选项是&#xff1f; import matplotlib.pyplot as plt x [1, 2, 3, 4, 5] y […...

IDEA debug 调试Evaluate Expression应用

链接&#xff1a; https://blog.csdn.net/xfx_1994/article/details/104136849?utm_mediumdistribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_v2~rank_aggregation-2-104136849.pc_agg_rank_aggregation&utm_termidea%E4%B8%ADevaluate&s…...

04-echarts-立体柱状图扩展

柱状图扩展 一、前言二、思路1、新增面①、在drawShape方法中&#xff0c;新增一个实际左侧面&#xff0c;②、 在drawShape方法中&#xff0c;新增一个实际右侧面&#xff0c;③ 绘制 2、新增series对象① 添加实际值的左侧面和右侧面 三、效果图 一、前言 事情是这样子的&am…...

HTML5 Web Workers: 异步编程的强大力量

在现代Web开发中&#xff0c;随着应用程序变得越来越复杂&#xff0c;用户界面的流畅性和响应性成为了决定用户体验好坏的关键因素之一。传统的JavaScript执行模型中&#xff0c;所有脚本都在同一个线程上运行&#xff0c;这意味着复杂的计算任务会阻塞UI更新&#xff0c;导致页…...

Flutter第十二弹 Flutter多平台运行

目标&#xff1a; 1.在多平台调试启动Flutter程序运行 一、安卓模拟器 1.1 检查当前Flutter适配的版本 flutter doctor提供了Flutter诊断。 $ flutter doctor --verbose /Users/zhouronghua/IDES/flutter/bin/flutter doctor --verbose [✓] Flutter (Channel master, 2.1…...

30天学会QT---------------大项目之在线考试系统

前段时间真的很忙很忙,忙完这段时间,总算是有空来写文章了,开始写的时候我就以为能够有时间准备和写这个,但是发现有时候忙着忙着就忘记了,没有办法来写项目,真的是非常尴尬。 现在有时间了,就有充分的时间来写了。 为了避免笔记断更,我决定先存稿来写。 1、如何规划项…...

搜维尔科技:力反馈主手—手术机器人应用〈腔镜手术机器人平台—进入手术室动物实验〉

力反馈主手—手术机器人应用〈腔镜手术机器人平台—进入手术室动物实验〉 搜维尔科技&#xff1a;力反馈主手—手术机器人应用〈腔镜手术机器人平台—进入手术室动物实验〉...

缓存技术实战[一文讲透!](Redis、Ecache等常用缓存原理介绍及实战)

目录 文章目录 目录缓存简介工作原理缓存分类1.按照技术层次分类2.按照应用场景分类3.按照缓存策略分类 应用场景1.硬件缓存2.软件缓存数据库缓存Web开发应用层缓存 3.分布式缓存4.微服务架构5.移动端应用6.大数据处理7.游戏开发 缓存优点缓存带来的问题 常见常用Java缓存技术1…...

初识es(elasticsearch)

初识elasticsearch 什么是elasticsearch&#xff1f;&#xff1a; 一个开源的分部署搜索引擎、可以用来实现搜索、日志统计、分析、系统监控等功能。 什么是文档和词条&#xff1f; 每一条数据就是一个文档对文档中的内容进行分词&#xff0c;得到的词语就是词条 什么是正向…...

AI在线免费视频工具2:视频配声音

1、视频配声音 https://deepmind.google/discover/blog/generating-audio-for-video/ https://www.videotosoundeffects.com/ &#xff08;免费在线使用&#xff09;...

Kafka 如何保证消息顺序及其实现示例

Kafka 如何保证消息顺序及其实现示例 Kafka 保证消息顺序的机制主要依赖于分区&#xff08;Partition&#xff09;的概念。在 Kafka 中&#xff0c;消息的顺序保证是以分区为单位的。下面是 Kafka 如何保证消息顺序的详细解释&#xff1a; ⭕分区内消息顺序 顺序写入&#…...

内存分配器性能优化

背景 在之前我们提到采用自定义的内存分配器来解决防止频繁 make 导致的 gc 问题。gc 问题本质上是 CPU 消耗&#xff0c;而内存分配器本身如果产生了大量的 CPU 消耗那就得不偿失。经过测试初代内存分配器实现过于简单&#xff0c;产生了很多 CPU 消耗&#xff0c;因此必须优…...

《OKR工作法》读书笔记

花了两个晚上的时间看完了《OKR工作法》这本书&#xff0c;谈不上有什么感想&#xff0c;因为工作后&#xff0c;其实就一直在用这种方法&#xff0c;所谓当局者迷嘛&#xff0c;习以为常也就谈不上多少新的启发。所以&#xff0c;这篇文章纯粹是一篇读书笔记&#xff0c;把我认…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...