Window/linux(docker) 单台宿主机部署多个Jenkins节点

  • 在使用Jenkins过程中,增加了手动输入的步骤,会阻塞节点运行任务;
  • 由于资源有限,需要在一台机器挂载了很多Jenkins节点;
  • Jenkins节点选择java方式运行;

环境:

  • Windows10
  • Docker
  • Apline Linux
  • OpenJdk11

前置条件

Window部署多个节点

  1. 由于需要挂载很多节点,使用.bat批处理文件需要启动多个界面
  2. 下载agent.jar,在Jenkins节点界面agent.jar是个下载链接,点击下载
  3. 为每个节点创建一个批处理命令,命名为'<节点名称>.bat'
  4. 将节点启动命令写入"java -jar agent.jar -jnlpUrl ******"
  5. 将批处理命令与agent.jar放在同一文件夹
  6. 双击启动,会打开一个CMD窗口(请勿关闭,否则节点下线)

例子:XuXiaoCong-Windows.bat

java -jar agent.jar -jnlpUrl http://192.168.0.1:8080/computer/XuXiaoCong-Windows/jenkins-agent.jnlp -secret 1234567890abcdefg -workDir "F:\Jenkins_nodes\XuXiaoCong-Windows"

linux(docker)部署多个节点

  1. 制作docker镜像
  2. 镜像生成容器
FROM alpine
WORKDIR /jenkins
# apk镜像
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
# 添加curl,git,openjdk11
RUN apk add --no-cache curl
RUN apk add --no-cache git
RUN apk add --no-cache openjdk11 # 添加其他运行环境(这里以Python为例)
RUN apk add --no-cache build-base
RUN apk add --no-cache python3
RUN apk add --no-cache python3-dev
RUN apk add --no-cache py3-pip # Jenkins页面上的agen.jar路径(右键复制链接)
RUN curl -o agent.jar http://192.168.0.1:8080/jnlpJars/agent.jar # 执行该节点(语句从Jenkins节点界面上复制)(只执行一条CMD,其余注释) # XuXiaoCong-Linux节点
CMD java -jar agent.jar -jnlpUrl http://192.168.0.1:8080/computer/XuXiaoCong-Linux/jenkins-agent.jnlp -secret 1234567890abcdefg -workDir "/var/jenkins"
# docker build -t jenkins-node-xuxiaocong-linux .
# docker run -d --restart=always --name=jenkins-node-xuxiaocong-linux jenkins-node-xuxiaocong-linux # XuXiaoCong-Linux-1节点
# CMD java -jar agent.jar -jnlpUrl http://192.168.0.1:8080/computer/XuXiaoCong-Linux-1/jenkins-agent.jnlp -secret 1234567890abcdefg -workDir "/var/jenkins"
# docker build -t jenkins-node-xuxiaocong-linux-1 .
# docker run -d --restart=always --name=jenkins-node-xuxiaocong-linux-1 jenkins-node-xuxiaocong-linux-1
  • Windows中制作镜像
cd <文件所在路径>
docker build -t jenkins-node-<节点名称> .
  • 生成容器
docker run -d --restart=always --name=jenkins-node-<节点名称> jenkins-node-<节点名称>

参考文档:

https://docs.docker.com/get-started

https://wiki.alpinelinux.org/wiki/Main_Page

https://www.cnblogs.com/jackadam/p/9290366.html

Window/linux(docker) 单台宿主机部署多个Jenkins节点的更多相关文章

  1. Docker Toolbox在window 10 home 下挂载宿主机目录到容器的正确操作

    由于我是window 10 home 而不是 pro版本,只能使用Docker Toolbox,其实docker for window对windows的支持更好,还有GUI,home版本安装Docke ...

  2. Docker容器获取宿主机信息

    最近在做产品授权的东西,开始宿主机为Window,程序获取机器硬件信息相对简单些,后来部署时发现各种各样的的环境问题,所有后来改用dokcer部署,docker方式获取宿主机信息时花了些时间,特此记录 ...

  3. 如何让Docker容器随宿主机的启动而自动启动

    使用Docker容器部署服务时,不仅需要让服务随Docker容器的启动而启动,还需要让Docker容器随宿主机的启动而自动启动,为此Docker提供了Docker run的restart参数 #doc ...

  4. docker容器和宿主机之间复制文件

    https://blog.csdn.net/u012416928/article/details/55049063 https://blog.csdn.net/u011596455/article/d ...

  5. Docker 容器与宿主机网段冲突导致网络无法 ping 通的解决方案

    docker 容器网络默认使用 bridge 桥接模式,正常情况下,容器会使用 daemon.json 中定义的虚拟网桥来与宿主机进行通讯. 最近更新 Docker for mac 之后,发现以前容器 ...

  6. [HACK] docker runtime 挂载宿主机目录

    网上看到的很多所谓的挂载都是容器创建时期的挂载,而且参数都不清不楚,整理如下(--name别名自己加): docker run -v /src/path:/dest/path:rw ${IMAGE} ...

  7. [Docker] 使用docker inspect查看宿主机与容器的共享目录

    docker inspect 容器名,可以查看到容器的元信息,在返回的j'son信息里面有个Mounts字段可以看到挂载目录 "Mounts": [ { "Type&qu ...

  8. docker容器与宿主机的数据交互

    在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作. 方式一.Docker cp命令 docker cp :用于容器与主机之间 ...

  9. 尝试理解Linux容器进程与宿主机共享内核到底是什么意思?

    背景 近期接触容器技术时,经常看到各类比较容器与虚拟机区别的文章中会提到:容器是共享宿主机的内核,而虚拟机则是拥有自己独立的内核,所以不可能在Linux上用容器运行windows,但是用虚拟机则可以. ...

  10. 【docker】docker容器和宿主机之间文件互传,互相拷贝

    原文地址:https://www.cnblogs.com/areyouready/p/8973495.html [注意:命令中符号均为英文符号] 1.从容器里面拷文件到宿主机 答:在宿主机里面执行以下 ...

随机推荐

  1. (app笔记)关闭monkey进程命令

    1.查询进程命令:adb shell ps | findstr "monkey" 2.杀死进程命令:adb shell kill PID(15015是进程ID,不是所有Monkey ...

  2. winform Message应用

    今天遇到了一个问题,winform 中使用自定义控件时,希望在点击自定义控件时设置控件为选中状态.而且这个自定义控件在一个窗体中被创建多个. 但在自定义控件中添加子控件后,导致鼠标点击事件只能响应在子 ...

  3. git remote prune origin删除本地有但在远程库已经不存在的分支

    先调用git remote show origin 该命令能够获取远端分支信息,你可以看到和本地和远端不同步的地方: 过时的就是和本地不同步的分支,本地已过时的表示你需要移除这个分支了. 这个时候你需 ...

  4. du命令_Linux du命令:查看文件夹和文件的磁盘占用情况

    du 命令,全称是 disk usage,用来展示磁盘使用量的统计信息. du 和 df 算是一对同门师兄弟,du 侧重在文件夹和文件的磁盘占用方面,而 df 则侧重在文件系统级别的磁盘占用方面.这两 ...

  5. dcat-admin主题

    1.白色主题 admin设置: css /*对于在表单中使用grid列表时点击按钮时没有提示和报错,是因为 显示的html与当前弹框错位了,并隐藏在当前弹框下*/ .popover{ z-index: ...

  6. win10上打包的qt程序放到win7上打不开的解决方法

    在win 10 上编写并打包发布了qt5.12.3 msvc2017 32bit的qt程序,在其他win10 电脑上都能正常运行,但是放到win7电脑上,运行exe时依次出现缺少"msvcp ...

  7. windows下搭建nrf52832nordic_ble_sniffer_3.0+wireshark抓包环境

    准备工具 pythone3.7安装包 https://www.python.org/ftp/python/3.7.7/python-3.7.7-amd64.exe Wireshark-win64-3. ...

  8. 【解决】Mac无法通过smb连接到windows的共享文件夹

    通过Mac访问windows的共享文件夹也有很多博文都写了,这里不再提. 先按照网上教程,在Windows下允许远程,然后设置文件夹共享出来,再在Mac上通过smb登录,输入用户名和密码窗口总是抖动, ...

  9. Git相关、Gitee多人协同开发

    Git相关 1.介绍 ​ 是一个具有版本控制的软件,控制开发的项目代码,具有集群化.多分支的功能 2.对于程序员的作用 协同开发 解决代码合并过程中冲突 代码版本管理 3.git 与 svn 比较 ​ ...

  10. axios和ajax对响应是文件流用blob处理

    先看axios请求处理,下载文件 this.$axios.get(api.exportMortgageOrderExcelVisit, { params: params, responseType: ...