使用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.mzph.cn/news/656026.shtml

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

相关文章

项目解决方案:高清视频监控联网设计方案

目 录 一、客户需求 二、网络拓扑图 三、方案描述 四、服务器配置 五、方案优势 1. 多级控制 2. 平台可堆叠使用 3. 支持主流接入协议 4. 多种终端显示 5. 视频质量诊断 6. 客户端功能强大 7. 一机一档 一、客户需求 客户现场存在两个网络环境&#xff0c…

自动化测试CSS元素定位

1.1 CSS定位 1.1.1 绝对路径定位 目标 查找第一个文本为“猜猜看”的a标签 实现 CSS表达式 html>body>div>a[.”猜猜看”] python表达式 driver.find_element_by_css_selector(‘html>body>div>a[.”猜猜看”]’) 1.1.2 相对路径定位 目标 查找第…

【Tomcat与网络1】史前时代—没有Spring该如何写Web服务

在前面我们介绍了网络与Java相关的问题, 最近在调研的时候发现这块内容其实非常复杂,涉及的内容多而且零碎,想短时间梳理出整个体系是不太可能的,所以我们还是继续看Tomcat的问题,后面有网络的内容继续补充吧。 目录 …

MongoDB安装以及卸载

查询id: docker ps [rootlocalhost ~]# docker stop c7a8c4ac9346 c7a8c4ac9346 [rootlocalhost ~]# docker rm c7a8c4ac9346 c7a8c4ac9346 [rootlocalhost ~]# docker rmi mongo sudo docker pull mongo:4.4 sudo docker images 卸载旧的 sudo docker stop mong…

【基础算法】1、快速排序快速选择

快速排序思想: 1、找一个分界点。 2、在分界点两边开始调整范围。 3、递归两边,重复。 例题: 给定你一个长度为 n的整数数列。 请你使用快速排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行&#xf…

【TCP】流量控制和拥塞控制

前言 TCP(传输控制协议)是互联网协议(IP)网络传输层协议,负责控制数据包的顺序和流量控制,以防止网络拥塞和数据丢失。TCP流量控制和拥塞控制是确保网络有效通信的重要机制。具体分析如下: 流…

微服务-微服务Alibaba-Nacos 源码分析(上)

Nacos&Ribbon&Feign核心微服务架构图 架构原理 1、微服务系统在启动时将自己注册到服务注册中心,同时外发布 Http 接口供其它系统调用(一般都是基于Spring MVC) 2、服务消费者基于 Feign 调用服务提供者对外发布的接口,先对调用的本地接口加上…

【Java程序设计】【C00168】基于SSM的旅游网管理系统(论文+PPT)

基于SSM的旅游网管理系统(论文PPT) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于ssm的旅游网系统 本系统分为用户前台功能模块和管理员功能模块2个功能模块。 用户前台功能模块:当游客打开系统的网址后,首先…

【Python笔记-设计模式】单例模式

一、说明 单例是一种创建型设计模式,能够保证一个类只有一个实例, 并提供一个访问该实例的全局节点。 (一) 解决问题 维护共享资源(数据库或文件)的访问权限,避免多个实例覆盖同一变量,引发程序崩溃。 …

JavaWeb中的Filter(过滤器)和 Listener(监听器)

提示:这两个东西听起来似乎很难,实际上是非常简单的,按照要求写就行了,一定不要被新名词给吓到了。 JavaWeb中的Filter(过滤器) 一、Filter(过滤器)1.如何编写 Filter2.Filter 中的细…

最小二乘圆柱拟合(高斯牛顿法)

欢迎关注更多精彩 关注我,学习常用算法与数据结构,一题多解,降维打击。 本期话题:最小二乘圆柱拟合 相关背景资料 点击前往 圆柱拟合输入和输出要求 输入 8到50个点,全部采样自圆柱上。每个点3个坐标,坐…

自动化测试的10大误区!

自动化测试因提高效率,减少重复工作的特性而被广泛采用。然而,随着自动化测试的普及,自动化测试也面临一系列挑战和误解。 这些误区不仅影响了测试的有效性,还会导致一定的项目风险,为了确保自动化测试能够真正提升测…

【EI会议征稿通知】2024年第四届激光,光学和光电子技术国际学术会议(LOPET 2024)

2024年第四届激光,光学和光电子技术国际学术会议(LOPET 2024) 2024 4th International Conference on Laser, Optics and Optoelectronic Technology 2024年第四届激光,光学和光电子技术国际学术会议(LOPET 2024)将于2024年5月17日-19日在中国重庆举行。…

长度最小的子数组[中等]

一、题目 给定一个含有n个正整数的数组和一个正整数target。找出该数组中满足其总和大于等于target的长度最小的连续子数组[numsl, numsl1, ..., numsr-1, numsr],并返回其长度。如果不存在符合条件的子数组,返回0。 示例 1: 输入&#xff…

迷你型洗衣机好用吗?迷你内裤洗衣机排名前十名推荐

随着大家工作的压力越来越大,下了班之后只能想躺平,在洗完澡之后看着还需要手洗的内衣裤真的很头疼。有些小伙伴还有会攒几天再丢进去洗衣机里面一起,而且这样子是非常不好的,用过的内衣裤长时间不清洗容易滋生细菌,而…

Redis学习——高级篇④

Redis学习——高级篇④ Redis7高级之Redis与Mysql数据双写一致性工程案例(四) 4.1 MySQL主从复制原理4.2 canal 工作原理4.3 mySQL->canal->redis 双写一致性1.环境2.配置Mysql3.配置canal4. Canal客户端(Java编写&#xff0…

JavaScript-for循环的执行顺序

1.目标 掌握for执行顺序 2.实现思路 使用for循环输出0-到5 3.代码实现 Document 4.总结 for执行顺序 1.执行 var i 0 变量初始化 条件判断 是否成立 成立 执行循环体 不成立 退出for循环

STL_list

一、有关list的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。Ii…

Docker容器引擎(6)

目录 一.什么是consul 解决什么问题? consul的模式: 二.consul 部署 consul服务器: 查看版本: 设置代理,在后台启动 consul 服务端: 进行后台启动: 查看集群信息: 访问页面…

云计算底层技术奥秘、磁盘技术揭秘、虚拟化管理、公有云概述

云计算基础 实验图例 虚拟化平台安装 创建虚拟机 1、创建虚拟机 2cpu,4G内存(默认用户名: root 密码: a) 2、验证 ecs 是否支持虚拟化 [rootecs ~]# grep -Po "vmx|svm" /proc/cpuinfovmx... ...[rootecs ~]# lsmod |grep kvm…