mac通过docker一键部署Jenkins
mac通过docker一键部署Jenkins
一、前言
程序猿开发任务本来就比较繁锁,如果搭建各种开源的软件还需要搜索这样那样的配置,那基本上两鬓斑白的头发基本上都快脱光了,如何找女朋友呢?难道一直和五姑娘为伴?所以自己当第一个吃螃蟹的人摸索了一些套路,编写一些简易的 shell 脚本帮我们快速的搭建服务器,猿们只要按着套路“一步一步”的操作,基本上都可以快速部署服务,也有《Jenkins自动安装脚本》,大家根据自己的实际情况进行操作。
二、系统配置
mac os:Monterey
mac version:12.4 (21F79)
mac type: MacBook Air (M1, 2020), Apple M1
docker desktop version:v4.10.0
docker version:v20.10.17
docker-compose version: v1.29.2
三、安装步骤
Dockerhub查看镜像地址
# 如果你比较懒可以使用最后的“Jenkins自动安装脚本”,mac电脑通用
https://hub.docker.com/r/jenkins/jenkins/tags
1、一键安装
1.1、下载脚本
https://gitee.com/xiaoyaojiugui/technical/blob/master/docker/foundations/cicd/jenkins
1.2、安装程序
# 跳转到指定文件夹,并执行如下命令:
sh ./jenkins.sh
1.2.1、安装程序详情
---------------函数开始执行---------------
1.1、检查必要软件,跳过此步骤,目录已存在[/Users/jason.zhuo/data/docker/apps/jdk-17]
1.2、检查必要软件,跳过此步骤,目录已存在[/Users/jason.zhuo/data/docker/apps/apache-maven-3.8.6]
1.3、检查必要软件,跳过此步骤,文件已存在[/Users/jason.zhuo/codes/leisure/doc/technical/docker/foundations/cicd/jenkins/software/jenkins.war]
2.1、执行创建容器操作,跳过此步骤,镜像已存在[jenkins/jenkins:latest]
2.2、执行创建容器操作,创建目录并授权,执行命令:sudo mkdir -p -v /Users/jason.zhuo/data/docker/volumes/jenkins/{jenkins-home,conf} && sudo chown -R jason.zhuo /Users/jason.zhuo/data/docker/volumes/jenkins
mkdir: created directory '/Users/jason.zhuo/data/docker/volumes/jenkins'
mkdir: created directory '/Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home'
mkdir: created directory '/Users/jason.zhuo/data/docker/volumes/jenkins/conf'
2.3、执行创建容器操作,执行命令:docker run -d -p 39090:8080 -p 50000:50000 -v /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home:/var/jenkins_home --name jenkins jenkins/jenkins:latest
2.4.1、执行创建容器操作,根据服务器性能调整时间,默认休息 10 秒,--> Tue 20 Sep 2022 11:12:41 AM CST <--
2.4.2、执行创建容器操作,根据服务器性能调整时间,默认休息 10 秒,--> Tue 20 Sep 2022 11:12:51 AM CST <--
2.5.1、执行创建容器操作,修改配置文件[/Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/hudson.model.UpdateCenter.xml]
2.5.2、执行创建容器操作,查看配置文件,执行命令:cat /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/hudson.model.UpdateCenter.xml | grep 'url'
2.5.3、执行创建容器操作,修改配置文件[/Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/updates/default.json]
sed -i "" 's/https:\/\/updates.jenkins.io\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/updates/default.json && sed -i "" 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/updates/default.json
2.5.5、执行创建容器操作,拷贝配置[/etc/profile]到本地并配置环境变量,执行命令:sudo docker cp $(docker ps -a | grep jenkins | awk '{print $1}'):/etc/profile /Users/jason.zhuo/data/docker/volumes/jenkins/conf/
2.6.1、执行重建容器操作,其容器为[jenkins/jenkins:latest],执行命令: docker run -d -p 39090:8080 -p 50000:50000 --privileged=true -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home:/var/jenkins_home -v /Users/jason.zhuo/data/docker/volumes/jenkins/conf/profile:/etc/profile -v /Users/jason.zhuo/data/docker/volumes/jenkins/conf/.bashrc:/root/.bashrc -v /Users/jason.zhuo/data/docker/apps/apache-maven-3.8.6:/usr/local/apps/apache-maven-3.8.6 -v /Users/jason.zhuo/data/docker/apps/jdk-17:/usr/local/apps/jdk-17 --name jenkins jenkins/jenkins:latest
2.6.2、复制Jenkins的最新war包到指定目录,执行命令:docker cp ./software/jenkins.war $(docker ps -a | grep jenkins | awk '{print $1}'):/usr/share/jenkins/jenkins.war
2.7.1、查看容器状态,执行命令:docker inspect --format='{{.State.Status}}' jenkins
2.7.2、查看容器状态,[exited],启动命令:docker start jenkins
jenkins
2.7.3、查看容器详情,执行命令:docker ps | grep jenkins/jenkins:latest
3.1、其他待执行命令,登录容器其命令为:docker exec -it -u root jenkins /bin/bash
3.2、其他待执行命令,复制最新war包其命令为:docker cp ./jenkins.war $(docker ps -a | grep jenkins | awk '{print $1}'):/usr/share/jenkins/jenkins.war
---------------函数执行完毕---------------
注意:此处休息10秒,是因为刚启动该文件没有初始完成(hudson.model.UpdateCenter.xml)
1.2.2、下载必要软件详情
1、检查目标目录,待执行脚本的路径为[/Users/jason.zhuo/code/leisure/doc/technical/docker/foundations/cicd/software],包括如下文件:
2、检查目标目录,跳过此步骤,文件夹已存在[/Users/jason.zhuo/data/docker/apps]
3、检查Maven软件,其文件名[apache-maven-3.8.6],压缩包名[apache-maven-3.8.6-bin.tar.gz]
4、检查Maven软件,解压压缩包,执行命令:tar -zxf apache-maven-3.8.6-bin.tar.gz
5、检查Maven软件,拷贝到指定目录,执行命令:sudo cp -r apache-maven-3.8.6 /Users/jason.zhuo/data/docker/apps
6、检查JDK软件,其文件名[jdk-17],压缩包[jdk-17_linux-aarch64_bin.tar.gz]
7、检查JDK软件,解压压缩包,执行命令:tar -zxf jdk-17_linux-aarch64_bin.tar.gz
8、检查JDK软件,重命名文件,执行命令:sudo mv jdk-17.0.4.1 jdk-17
9、检查JDK软件,拷贝到指定目录,执行命令:sudo cp -r jdk-17 /Users/jason.zhuo/data/docker/apps
10、查看目标目录内容,执行命令:ls /Users/jason.zhuo/data/docker/apps
1.3、启动成功后,即可正常访问
http://localhost:39090/login
1.4、查看登录密码
docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
1.5、插件自定义安装
注意:此处不安装任何插件,因为Jenkins的官方插件下载地址速度非常慢。
1、获取密码,登录即可;
2、“选择插件来安装”而非社区推荐的插件 --> 选择“无” --> 然后点击“安装”即可;
3、创建第一个管理员账户,只有创建了新账户并成功登录后,才能执行如下《步骤1.6》


1.6、修改国内插件下载源
注意:执行完命令后请重启!执行完命令后请重启!执行完命令后请重启!
1、Jenkins的官方插件下载地址速度非常慢,需要替换成国内插件地址;
2、手动更新配置,复制《1.2.1 安装程序详情》中的《2.5.3命令》,在终端执行即可;
3、执行完以下命令,需要重启 jenkins 才能生效;
# 解决打开登录界面时一直在转圈圈,程序自动更新 update-center.json
sed -i "" 's/https:\/\/updates.jenkins.io\/update-center.json/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins\/updates\/update-center.json/g' /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-data/hudson.model.UpdateCenter.xml
# 替换成国内插件地址,手动更新 default.json
# 其实有很多朋友会问,为什么更新 default.json 不放在 shell 脚本中操作呢?之前试过在 shell 脚本中更新,但只要没有创建第一个管理员账户,那 default.json 配置就会被还原成官方配置,请执行命令;
sed -i "" 's/https:\/\/updates.jenkins.io\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/updates/default.json && \
sed -i "" 's/https:\/\/www.google.com/https:\/\/www.baidu.com/g' /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/updates/default.json
1.7、容器内下载最新版本Jenkins
1.7.1、以root用户登录容器
1、以root用户登录容器
docker exec -it -u root jenkins /bin/bash
2、跳转到指定目录
cd /usr/share/jenkins
3、让环境变量生效
source /etc/profile
1.7.2、在容器中下载jenkins的最新war包
# 1、如果容器内没有wget命令,则安装应用:
sudo apt-get update && apt-get install wget
# 2、下载最新的镜像
wget http://mirrors.jenkins.io/war/latest/jenkins.war
1.7.3、新旧war包替换
# 1、移除旧war包
rm -rf jenkins.war
# 2、重命令新war包
mv jenkins.war.1 jenkins.war
1.7.4、退出容器,并重启应用
docker restart jenkins
1.8、手动安装社区推荐的插件
注意:如果安装插件时失败,且有提示要更新 Jenkins 版本,操作请按《步骤1.7》
Jenkins -> Manage Jenkins -> Manage Plugins,点击Available
| 序号 | 插件 | 是否安装 |
|---|---|---|
| 1 | Folders | yes |
| 2 | OWASP Markup Formatter | |
| 3 | Build Timeout | yes |
| 4 | Credentials Binding | |
| 5 | Timestamper | yes |
| 6 | Workspace Cleanup | yes |
| 7 | Ant | yes |
| 8 | Maven Integration | yes |
| 9 | GitHub Branch Source | yes |
| 10 | Git | yes |
| 11 | Pipeline | yes |
| 12 | Pipeline: Groovy | yes |
| 13 | Pipeline: Stage View | yes |
| 14 | Pipeline: Declarative | yes |
| 15 | Pipeline: Basic Steps | yes |
| 16 | SSH Build Agents | yes |
| 17 | Publish Over SSH | yes |
| 18 | Matrix Authorization Strategy | |
| 19 | Parameterized Trigger | yes |
| 20 | Email Extension | yes |
| 21 | JUnit | yes |
| 22 | Localization: Chinese (Simplified) | yes |
1.9、解决问题
打开登录界面时,一直停留在“Please wait while Jenkins is restarting ...”
解决方案:请参考《步骤1.6》Jenkins的官方插件下载地址速度非常慢,需要替换成国内插件地址
解决方案:请参考《步骤1.6》Docker 中的 Jenkins 重启时,“/etc/profile”环境变量失效
解决方案:
1.在/root/.bashrc文件最下面添加如下指令:source /etc/profile
2.保存文件,然后执行:source /root/.bashrc
1.10、卸载程序
备注:此步骤请慎用,执行脚本时后面加任意参数即可卸载
# 参数1:即删除容器
sh ./jenkins.sh del1
# 参数1:删除容器和文件夹
sh ./jenkins.sh delete
# 参数2:即删除镜像,删除后需要重新下载镜像才能初始化容器
sh ./jenkins.sh del1 del2
1.10.1、卸载程序详情
---------------函数开始执行---------------
1.1、执行容器删除操作,跳过此步骤,检查必要软件
2.1、执行容器删除操作,跳过此步骤,删除原镜像[jenkins/jenkins:latest]
2.2、执行容器删除操作,跳过此步骤,创建目录[/Users/jason.zhuo/data/docker/volumes/jenkins]
2.3、执行容器删除操作,跳过此步骤,第一次初始化容器[jenkins]
2.4、执行容器删除操作,跳过此步骤,休眠 120 秒
2.5、执行容器删除操作,跳过此步骤,修改配置文件
2.6、执行容器删除操作,执行命令:docker stop jenkins && docker rm jenkins
2.6、执行容器删除操作,成功删除容器[jenkins]
2.7、执行容器删除操作,跳过此步骤,第二次初始化容器[jenkins]
2.8、执行容器删除操作,跳过此步骤,检查容器状态
2.9.1、执行容器删除操作,删除文件夹,执行命令:sudo rm -rf /Users/jason.zhuo/data/docker/volumes/jenkins
2.9.2、执行容器删除操作,成功删除文件夹[/Users/jason.zhuo/data/docker/volumes/jenkins]
---------------函数执行完毕---------------
四、总结
自动化脚本安装完成后,本地的 Jenkins 基本上就可以随便玩,文章如有不对之处请留言,会及时修正,谢谢阅读!!
五、后记
所有文章均为本人原创,本人写作的目的就是想帮助对技术有需要的人,所以欢迎同行转载本站文章,但是,希望您注明来源,并留下原文链接地址,这是对文章作者的尊重,也是对知识的尊重。
mac通过docker一键部署Jenkins的更多相关文章
- mac通过docker一键部署MySQL8
目录 mac通过docker一键部署MySQL8 一.前言 二.系统配置 三.安装步骤 Dockerhub查看镜像地址 1.一键安装 1.1.克隆脚本 1.2.安装程序 1.2.1.安装程序详情 1. ...
- mac通过docker一键部署Nexus3
目录 mac通过docker一键部署Nexus3 一.前言 二.系统配置 三.安装步骤 1.Dockerhub查看镜像地址 2.一键安装 2.1.克隆脚本 2.2.安装程序 2.2.1.程序安装详情 ...
- Mac通过docker一键部署airflow
目录 Airflow部署及使用 1.Dockerhub查看镜像地址 2.拉取docker镜像 3.在宿主机创建外挂文件夹 4.创建docker容器 5.重新创建docker容器 5.1.查看airfl ...
- Docker一键部署Hadoop心得(一)
最近一直在折腾使用docker一键部署全分布式hadoop集群,虽然一键部署的脚本写好了并且可以成功运行出各个节点,但在运行一个wordcount实例时出现了错误,错误如下: java.io.IOEx ...
- 使用Docker 一键部署 LNMP+Redis 环境
使用Docker 部署 LNMP+Redis 环境 Docker 简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linu ...
- 基于Docker一键部署大规模Hadoop集群及设计思路
一.背景: 随着互联网的发展.互联网用户的增加,互联网中的数据也急剧膨胀.每天产生的数据量数以万计,本地文件系统和单机CPU已无法满足存储和计算要求.Hadoop分布式文件系统(HDFS)是海量数据存 ...
- Helm Chart 一键部署 Jenkins
Jenkins Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件.目前提供超过1000个插件来支持构建.部署.自动化, 满足任何项目的需要. Jenki ...
- RabbitMQ集群 Docker一键部署
以下内容来自网络转载 步骤1. 安装docker 以centos7为例,https://docs.docker.com/engine/installation/linux/centos/ 步骤2. 创 ...
- Docker:docker安装部署jenkins
Docker安装步骤请转到:https://www.cnblogs.com/nhdlb/p/11262527.html 查看docker的jenkins镜像版本 #查看jenkins版本命令 dock ...
随机推荐
- nginx的高级用法
一.根据url中的参数来确定缓存的key set_by_lua_block $dataArg { local enc = ngx.req.get_uri_args()["enc"] ...
- 快速新建并配置一个eslint+prettier+husky+commitlint+vue3+vite+ts+pnpm的项目
前置准备 一台电脑 vscode pnpm vscode插件:ESLint v2.2.6及以上 vscode插件:Prettier - Code formatter v9.5.0及以上 vscode插 ...
- 技术分享 | check(col_name<>'')为何把空格拒之门外
1.问题描述 前两天在群里看到同事反馈一个空格问题,大致现象如下: mysql> select @@version; +-----------+ | @@version | +--------- ...
- 日均 6000+ 实例,TB 级数据流量,Apache DolphinScheduler 如何做联通医疗大数据平台的“顶梁柱”?
作者 | 胡泽康 鄞乐炜 作者简介 胡泽康 联通(广东)产业互联网公司 大数据工程师,专注于开源大数据领域,从事大数据平台研发工作 鄞乐炜 联通(广东)产业互联网公司 大数据工程师,主要从事大数据平 ...
- java-运算符与判断
运算符: 1)算术运算符:+-*/%,++,-- 进行加.减.乘.除.取余数.自增.自减 2)关系运算符:>,<,>=,<=,==,!= boolean类型 判断两个整形 ...
- iommu分析之---DMA remap框架实现
本文主要介绍iommu的框架.基于4.19.204内核 IOMMU核心框架是管理IOMMU设备的一个通过框架,IOMMU设备通过实现特定的回调函数并将自身注册到IOMMU核心框架中,以此通过IOMMU ...
- ARC122D XOR Game(博弈论?字典树,贪心)
题面 ARC122D XOR Game 黑板上有 2 N 2N 2N 个数,第 i i i 个数为 A i A_i Ai. O I D \rm OID OID(OneInDark) 和 H I D ...
- 对Github指定类目的内容进行监控和推送
很久之前看到HACK学习呀有一个Github 安全搬运工的系列文章,个人觉得很不错,想要在自己的公众号上也做这方面的内容,内容的编辑排版相对来说比较容易,这样问题就回归到Github安全内容的获取上 ...
- String与StringBuilder相互转换以及获取字符串中第一个中文汉字
String与StringBuilder相互转换 1. StringBuilder转为String StringBuilder sb = new StringBuilder(); sb.append( ...
- 轻量级RTSP服务和内置RTSP网关有什么不同?
好多开发者疑惑,什么是内置RTSP网关,和轻量级RTSP服务又有什么区别和联系?本文就以上问题,做个简单的介绍: 轻量级RTSP服务 为满足内网无纸化/电子教室等内网超低延迟需求,避免让用户配置单独的 ...