使用Docker安装Jenkins,并能够在该Jenkins中使用Docker

1. 构建Dockerfile 试错1

参考https://medium.com/@manav503/how-to-build-docker-images-inside-a-jenkins-container-d59944102f30

按照文章里所介绍的,实现在Jenkins容器环境中依然能够调用Docker,需要做到以下几步

  1. 下载Jenkins镜像
  2. 将环境中的docker.socket映射到Jenkins中部
  3. 在Jenkins镜像中安装docker客户端,调用docker.socket

为此,该博客构建的Dockerfile如下

from jenkinsci/jenkins:ltsUSER root
RUN apt-get update -qq \&& apt-get install -qqy apt-transport-https ca-certificates curl gnupg2 software-properties-common 
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
RUN add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/debian \$(lsb_release -cs) \stable"
RUN apt-get update  -qq \&& apt-get install docker-ce=17.12.1~ce-0~debian -y
RUN usermod -aG docker jenkins

然而我在实践的时候,发现如下问题

安装的时候没有任何输出

这是由于命令行指令中有-qq

在 apt-get update -qq这个命令中,-qq是一个选项名。这是APT命令行工具apt-get的一个参数。它的含义是"无视’-q’选项,除了错误之外,什么都不输出"。

再简单点说,就是当你运行带有-qq参数的apt-get update命令时,这个命令会在后台默默。它只有在遇到错误时才会输出信息,其他时候它都会默默工作,不会打印任何多余的信息。

执行update的时候总是error

首先我采取了换源策略,参考的博客是https://blog.csdn.net/weixin_45067618/article/details/122234387

使用的指令如下

# 查看内部软件源
cat /etc/apt/sources.list# 查看系统版本
cat /etc/os-release
# PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
# NAME="Debian GNU/Linux"
# VERSION_ID="9"
# VERSION="9 (stretch)"
# ID=debian
# HOME_URL="https://www.debian.org/"
# SUPPORT_URL="https://www.debian.org/support"
# BUG_REPORT_URL="https://bugs.debian.org/"

然后根据系统版本,去清华大学镜像(https://mirrors.tuna.tsinghua.edu.cn/help/debian/)或者阿里云镜像(https://developer.aliyun.com/mirror/debian?spm=a2c6h.13651102.0.0.3e221b11vzU4iS)寻找对应版本的镜像源,然后替换sources.list的内容就可以

然而,我发现还是总会报错debian 9 apt update失败 (404 ign: E: W: N:)
后来查阅博客https://blog.csdn.net/vipdafei/article/details/130930882,才发现,原来debian 9的源已经停止维护了

从2023年4月23日起,debian9的源包地址更换至新地址。

新地址如下:

deb http://archive.debian.org/debian/ stretch main contrib non-free
deb-src http://archive.debian.org/debian/ stretch main contrib non-free
deb http://archive.debian.org/debian-security/ stretch/updates main contrib non-free
deb-src http://archive.debian.org/debian-security/ stretch/updates main contrib non-free
deb http://archive.debian.org/debian/ stretch-backports main contrib non-free

将上述内容输入到sources.list就可以正常更新了

执行最后一步apt-get install docker-ce=17.12.1ce-0debian -y的时候报错debconf: unable to initialize frontend: Dialog

参考https://blog.csdn.net/jiangjiang_jian/article/details/88822981

是因为在使用apt-get安装依赖时,可能会有对话框,制作镜像时如果不选择会导致失败。
解决方案:在Dockerfile中增加一句:

ENV DEBIAN_FRONTEND noninteractive

因此,在修改之后,Dockerfile的指令变成了这样

from jenkinsci/jenkins:ltsUSER rootADD ./sources.list /etc/apt/
#RUN sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list
ENV DEBIAN_FRONTEND noninteractiveRUN cat /etc/os-release &&  cat /etc/apt/sources.list &&  apt-get update -qq\&& apt-get install -qqy apt-transport-https ca-certificates curl gnupg2 software-properties-common
RUN curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | apt-key add -
RUN add-apt-repository \"deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/debian/ \$(lsb_release -cs) \stable"
RUN apt-get update -qq\&& apt-get install docker-ce=17.12.1~ce-0~debian -y
RUN usermod -aG docker jenkins

但还是无法安装,因为版本不对

改成上面这样,还是无法安装,提示Docker Desktop requires a newer WSL kernel version。因为我们用的jenkins版本不对。

  1. jenkinsci/jenkins:这是旧的Jenkins Docker镜像的名称。它是由Jenkins社区维护和发布的。早些年,Jenkins项目在jenkinsci这个Docker Hub命名空间下发布它们的官方镜像。

  2. jenkins/jenkins:这是新的Jenkins Docker镜像的名称。同样,它也是由Jenkins社区维护和发布的。不过,从2017年开始,Jenkins项目将官方镜像的发布位置从jenkinsci命名空间迁移到了jenkins命名空间下。

上述参考的博客都太老了,因此有必要更新了

2. 构建Dockerfile 新版本

新版本的Dockerfile如下所示

其中./sources.list来自于清华大学镜像https://mirrors.tuna.tsinghua.edu.cn/help/debian/,选的是Debian 12版本

from jenkins/jenkinsUSER rootADD ./sources.list /etc/apt/
ENV DEBIAN_FRONTEND noninteractiveRUN cat /etc/os-release &&  cat /etc/apt/sources.list &&  apt-get update -qq\&& apt-get install -qqy apt-transport-https ca-certificates curl gnupg2 software-properties-common
RUN curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | apt-key add -
RUN add-apt-repository \"deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/debian/ \$(lsb_release -cs) \stable"
RUN apt-get update -qq\&& apt-get install docker-ce -y
RUN usermod -aG docker jenkins

3. 搭建Jenkins服务

搭建Jenkins服务可以参考我之前的博客https://blog.csdn.net/weixin_42763696/article/details/134499518

构建自由风格的流水线,执行脚本docker container ls即可
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

架构整洁之道-价值维度与编程范式

1 设计与架构究竟是什么 结论:二者没有任何区别,一丁点区别都没有。 架构图里实际上包含了所有底层设计细节,这些细节信息共同支撑了顶层的架构设计,底层设计信息和顶层架构设计共同组成了整个架构文档。底层设计细节和高层架构信…

JRT人大金仓测试

之前基于IRIS导出的Sql脚本用JRT的导表脚本执行Sql语句在PostGreSql数据库把IRIS导出的库还原。并且试了模板设计器的打开和保存及打印功能。本次测试IRIS导出的Sql在人大金仓上还原数据库,并且测试模板设计器功能和打印。 首先碰到的一个坑是人大金仓把空串存成NU…

Win10 双网卡实现同时上内外网

因为需要同时上内网和外网,但公司做了网络隔离,不能同时上内外网,所以多加了块无线网卡,配置双网关实现同时上内外网,互不影响 打开 Windows PowerShell(管理员),输入:ro…

python爬虫爬取网站

流程: 1.指定url(获取网页的内容) 爬虫会向指定的URL发送HTTP请求,获取网页的HTML代码,然后解析HTML代码,提取出需要的信息,如文本、图片、链接等。爬虫请求URL的过程中,还可以设置请求头、请求参数、请求…

现代C++之万能引用、完美转发、引用折叠FrancisFrancis

转载:现代C之万能引用、完美转发、引用折叠 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/99524127 后期参考(还未整合):C 完美转发深度解析:从入门到精通_c完美转发-CSDN博客https://blog.csdn.net/qq_21438461/article/details/129938466 0.导语 …

产品经理的发展方向是什么?市场需求现状如何?未来有哪些趋势?作为产品经理应该如何准备?

目录 了解产品经理的发展方向 市场需求现状 未来有那些趋势? 作为产品经理应该作何准备? 了解产品经理的发展方向 市场需求现状 未来有那些趋势? 个人软件 :智能终端,轻量化应用,虚拟社交等企业软件&#xff1a…

2022年下半年部分团队的总结

写作,慢思考: 软件团队每天有繁忙的工作,有很多待办事项,会议,口头交流,线上的 bug 要处理,报表要生成和解释… … 一个月过去了,正想总结,下一个月,下一年又…

三维模型设计新纪元:3D开发工具HOOPS在机械加工行业的应用与优势

在当今快速发展的科技时代,机械加工行业正经历着巨大的变革,而HOOPS技术正是其中一项重要的创新。HOOPS技术不仅仅是一种用于处理和可视化计算机辅助设计(CAD)数据的工具,更是机械加工领域中提升效率、优化设计的利器。…

【计算机网络】【练习题及解答】【新加坡南洋理工大学】【Computer Control Network】

说明: 仅供学习使用。 一、题目描述 题目共4问,描述网络通信中的 帧传输时延(Frame Delay)、传播时延(Propagation Delay),以及 链接利用率(Link Utilization) 的相关…

十年创业记-01-草根搭上时代快车

十年创业的点点滴滴,记录起步、发展到壮大的过程,有失败的教训,有成功的经验,也有一些建议,与君共勉。 今年35岁,创业的第九年,坐标十八线小城市,软件外包行业。从2015年20万的营业额…

MyBatis 源码系列:MyBatis 解析配置文件、二级缓存、SQL

文章目录 解析全局配置文件二级缓存解析解析二级缓存缓存中的调用过程缓存中使用的设计模式 解析SQL 解析全局配置文件 启动流程分析 String resource "mybatis-config.xml"; //将XML配置文件构建为Configuration配置类 reader Resources.getResourceAsReader(re…

1.30 C++ day4

思维导图 构造函数、析构函数、拷贝构造函数、拷贝赋值函数 代码 #include <iostream>using namespace std;class Stu//封装一个学生类 { private://私有属性string name;int id;double *score; public://公共属性//无参构造函数Stu(){cout << "Stu::无参构…