使用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:lts
 
USER 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:lts
 
USER root

ADD ./sources.list /etc/apt/
#RUN sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list
ENV DEBIAN_FRONTEND noninteractive

RUN 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/jenkins
 
USER root

ADD ./sources.list /etc/apt/
ENV DEBIAN_FRONTEND noninteractive

RUN 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即可
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式——2_0 职责链(Chain of Responsibility)

楼下一个男人并得要死,那家隔壁的一家唱着留声机,对面是弄孩子。楼上有两人狂笑;还有打牌声,河中的船上有女人哭她死去的母亲。人类的悲欢并不相通,我只觉得他们吵闹 ——鲁迅 定义 使多个对象都有机会处理请求&#…

Go语言中HTTP代理的请求和响应过程

在Go语言中,HTTP代理的实现涉及对请求和响应的拦截、转发和处理。下面将详细介绍这个过程。 请求过程: 客户端发起请求:客户端(例如浏览器或其他应用程序)发送HTTP请求到代理服务器。建立连接:代理服务器…

fgets函数和fputs函数的使用

----由于本人使用的是大白话来讲解fgets和fputs函数的使用,所以可能有些部分可能会有些不准确(见谅),如果想十分严谨的了解fgets和fputs函数,可以移步其他文章。 -----那么不废话,直接开始 1.fgets函数 &a…

专栏:数据库、中间件的监控一网打尽

前言 对于数据库、中间件的监控,目前社区里最为完善的就是 Prometheus 生态的各个 Exporter,不过这些 Exporter 比较分散,不好管理,如果有很多目标实例需要监控,就要部署很多个 Exporter,要是能有一个大一…

Linux系统Shell脚本-----------正则表达式 、grep、 sed

一、正则表达式 1.前言 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。在Linux中也就是代表我们定义的模式模板&…

SAI实例研究(3)

实例3 creature.id 16295(smart_script.entryorguid)的SAI设置: 共分为0和1两个事件阶段 第0阶段: 第1条(id 0) 当 creature 刷新时(event_type 11),creature 对自身&#xff0…

【网络】传输层TCP协议 | 三次握手 | 四次挥手

目录 一、概述 2.1 运输层的作用引出 2.2 传输控制协议TCP 简介 2.3 TCP最主要的特点 2.4 TCP连接 二、TCP报文段的首部格式 三、TCP的运输连接管理 3.1 TCP的连接建立(三次握手) 3.2 为什么是三次握手? 3.3 为何两次握手不可以呢? 3.4 TCP的…

ChatGPT4 比 ChatGPT3.5 强在了那里?

刚开始的时候我还在纠结,一个月20 刀的ChatGPT4 ,到底值不值这个价钱?使用过后发现,诶嘛真香。因为 GPT4 比 GPT3.5 多了太多功能,特别是识图能力,用好的话效率翻倍。 1. 看图写代码 ChatGPT4 相比 ChatG…

colab使用自己数据集进行模型训练的方法汇总

在 Google Colab 上使用自己的数据集进行模型训练。Colab 允许通过多种方式上传数据,包括直接从本地计算机上传、从 Google Drive 加载或通过网络链接下载,从github导入等。 GitHub导入 使用以下的代码将github上的文件克隆到colab的当前目录下 !git …

除了Adobe之外,还有什么方法可以将Excel转为PDF?

前言 Java是一种广泛使用的编程语言,它在企业级应用开发中发挥着重要作用。而在实际的开发过程中,我们常常需要处理各种数据格式转换的需求。今天小编为大家介绍下如何使用葡萄城公司的的Java API 组件GrapeCity Documents for Excel(以下简…

vue3使用AntV G6 (图可视化引擎)历程[三]

上期回顾:历程[二]描述了节点抽离自定义节点并做数据静态渲染。下面这篇继续描述节点升级版的模块化抽离以及动态数据渲染 官网地址:https://g6-next.antv.antgroup.com/manual/introduction “antv/g6”: “^4.8.24” 一、 案例效果 二、自定义节点的模…

第九节HarmonyOS 常用基础组件14-DataPanel

1、描述 数据面板组件,用于将多个数据占比情况使用占比图进行展示。 2、接口 DataPanel(options:{values: number[], max?: numner, type?: DataPanelType}) 3、参数 参数名 参数类型 必填 描述 values number[] 是 数据值列表,最多含9条数…

SpringCloud微服务常见问题

1 微服务 返回面试宝典 问题1 SpringCloud常见组件有哪些? SpringCloud包含的组件很多,有很多功能是重复的,其中最常见的组件包括: 注册中心组件:Eureka、Nacos等;负载均衡组件:Ribbon&…

Spring Security的入门案例!!!

一、导入依赖 <dependencies><!--web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--security--><dependency><groupId>…

如何获得《幻兽帕鲁》隐藏帕鲁唤夜兽?13000个配种配方查询 幻兽帕鲁Steam好评率还在涨 Mac苹果电脑玩幻兽帕鲁 Crossover玩Windows游戏

《幻兽帕鲁》是一款Steam平台热门游戏&#xff0c;开放式大陆和养成式冒险结合&#xff0c;成为2024首款热门游戏&#xff0c;不过由于官方仅发布了Windows版的游戏客户端&#xff0c;Mac用户无法直接玩&#xff0c;好在有Crossover这样的神器&#xff0c;让苹果电脑也能玩上《…

OCP NVME SSD规范解读-8.SMART日志要求-2

SMART-7&#xff1a; 软错误ECC计数可能是记录了被第一级ECC&#xff08;比如LDPC Hard Decode&#xff09;成功纠正过的读取错误次数。这意味着数据恢复成功&#xff0c;但依然表明存储介质出现了某种程度上的可靠性下降。 LDPC码是一种基于稀疏矩阵的纠错码&#xff0c;它由…

WebGL 入门:开启三维网页图形的新篇章(下)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

go基础-垃圾回收+混合写屏障GC全分析

垃圾回收(Garbage Collection&#xff0c;简称GC)是编程语言中提供的自动的内存管理机制&#xff0c;自动释放不需要的对象&#xff0c;让出存储器资源&#xff0c;无需程序员手动执行。 Golang中的垃圾回收主要应用三色标记法&#xff0c;GC过程和其他用户goroutine可并发运行…

高端车规MCU的破局之路

目录 1 低质量的无效内卷 2 高端车规MCU产品共性 2.1 支持标定测量 2.2 低延迟通信加速 2.3 完备的网络安全解决方案 2.4虚拟化 3 国产替代的囚徒困境 1 低质量的无效内卷 近几年&#xff0c;车规MCU国产替代的呼声此消彼长&#xff0c;但仍然集中在低端产品。 从产…

网络安全知识和华为防火墙

网络安全 网络空间安全 ---Cyberspace 2003年美国提出的网络空间概念 ---一个由信息基础设施组成的互相依赖的网络。 我国官方文件定义&#xff1a;网络空间为继海、陆、空、天以外的第五大人类互动领域。 通信保密阶段 --- 计算机安全阶段 --- 信息系统安全 --- 网络空间安…