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. Openssh升级到9.2版本

    操作系统:centos7.6 1.安装依赖 yum install gcc gcc-c++ zlib-devel pam-devel openssl-devel make vim wget -y 备份 ...

  2. Python爬取三国演义章节标题和内容(bs4爬取,解决中文乱码)

    import os.path import requests from bs4 import BeautifulSoup if __name__ == '__main__': if not os.pa ...

  3. js中的加法运算

  4. 移动自动化-swipe、scroll、drag、高级手势等

    swipe 滑动事件 使用方法:driver.swipe(strat_x,start_y,end_x,end_y) swipe通过driver使用 传入起始的位置x和y,和结束的位置x和y 时间参数, ...

  5. Day23:个人小结的撰写&&对coderunner的熟悉

    今日完成的任务: 1.完成个人小结的撰写 2.阅读Moodle文档,了解Moodle平台以及Moodle出题格式  明日计划: 1.撰写总报告中的结论 2.将插件安装完成 每日小结: 为了研究题库,特 ...

  6. 设置NTP校时

    设置NTP校时-作为客户端 @echo off rem 以管理员身份执行文件 rem 适用于域控PDC主机,对于未加域的计算机可直接使用Internet时间同步 rem 获取管理员权限 %1 msht ...

  7. uniapp与原生交互

    1.项目中引入 DSBridge.js 文件 var bridge = { default: this, call: function(b, a, c) { var e = ""; ...

  8. JSONObject.parseObject syntax error,expect START WITH { OR [,but actually START WITH error

    JSONObject.parseObject syntax error,expect START WITH { OR [,but actually START WITH error解析JSON出现异常 ...

  9. R语言MCMC-GARCH、风险价值VaR模型股价波动分析上证指数时间序列

    全文链接:http://tecdat.cn/?p=31717 原文出处:拓端数据部落公众号 分析师:Ke Liu 随着金融市场全球化的发展,金融产品逐渐受到越来越多的关注,而金融产品的风险度量成为投资 ...

  10. centos 6.5 docker  安装

    https://www.cnblogs.com/zhangzhen894095789/p/6641981.html?utm_source=itdadao&utm_medium=referral