docker安裝jenkins v2.504.1集群

1 概述

Jenkins是一款開源的、基于Java開發的持續集成(CI)與持續交付(CD)工具,旨在通過自動化構建、測試和部署流程,提升軟件開發效率與質量。 ?

1.1 核心功能與特點

  • 持續集成與交付?
    Jenkins支持自動化構建、測試和部署,通過頻繁集成代碼(如每日多次)快速發現錯誤,確保軟件質量。
    提供Pipeline功能,可定義完整的CI/CD流程,覆蓋從代碼提交到生產環境部署的全生命周期。
    ?插件生態系統?

  • 擁有數百個插件
    支持與Git、Maven、Docker等工具集成,擴展性強。插件涵蓋版本控制、測試框架、部署平臺等,滿足多樣化需求。

  • 易用性與可擴展性?
    提供Web界面配置,無需數據庫支持,安裝簡單(支持War包、RPM等方式)。
    支持分布式構建,可在多臺機器上并行執行任務,提升效率。

  • 跨平臺支持?
    兼容Windows、Linux、macOS等操作系統,適應不同開發環境。

1.2 應用場景

?大型項目與微服務架構?:頻繁更新的項目(如微服務)可通過Jenkins實現高效自動化部署。
?敏捷開發與DevOps?:作為CI/CD核心工具,支持團隊協作與快速迭代。

2 環境

資源說明
jenkins master10.0.11.239、centos 7.9、docker運行、工作目錄/home/jenkins/jenkins_home
jenkins slave110.0.3.64、centos 7.9、docker運行、工作目錄/home/jenkins/agent

在這里插入圖片描述


3 部署

通過docker容器部署一個jenkins master節點和一個jenkins slave節點。部署成功后,可在web控制臺看見一個集群。

3.1 jenkins master部署

3.1.1 安裝docker

yum install -y yum-utils device-mapper-persistent-data lvm2
yum install yum-utils -y
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates
yum install docker-ce-cli-20.10.5-3.el7 docker-ce-20.10.5-3.el7 -ymkdir -p /etc/docker
cat > /etc/docker/daemon.json << EOF
{"max-concurrent-downloads": 10,"log-driver": "json-file","log-level": "warn","log-opts": {"max-size": "100m","max-file": "3"},"live-restore": true,"exec-opts": ["native.cgroupdriver=systemd"]
}
EOFsystemctl daemon-reload
systemctl enable docker
systemctl restart docker

3.1.2 安裝docker-compose

docker run --privileged --rm -v /usr/local/bin/:/dest registry.cn-hangzhou.aliyuncs.com/lwmacct/file:docker-compose-linux-x86_64-v2.2.3-t2022020101
docker-compose -v

3.1.3 安裝jenkins master

工作目錄宿主機的/home/jenkins/jenkins_home,需要從容器里映射出來。
生成docker-compose.yml文件:

mkdir -p /home/jenkins
cd /home/jenkinscat > docker-compose.yml << EOF
version: "3.8"
services:jenkins:image: jenkins/jenkins:ltscontainer_name: jenkinsrestart: alwaysprivileged: trueuser: rootvolumes:- /home/jenkins/jenkins_home:/var/jenkins_home- /var/run/docker.sock:/var/run/docker.sockports:- "8080:8080"- "50000:50000"environment:TZ: Asia/Shanghai
EOF
docker-compose up -d

在這里插入圖片描述

瀏覽器訪問:服務器IP:8080端口。
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

[ Manage Jenkins ] —> [ Appearance]中,設置語言為中文。

3.1.4 新增jenkins工作節點的預配置

工作節點的名稱設置為slave01,工作目錄設置為:/home/jenkins/agent。
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
從上圖可以看見,工作節點加入jenkins集群的命令很簡單。記住這些命令的參數,稍后,參數信息會放到容器的環境變量中。


3.2 jenkins slave部署

slave服務器也需要安裝docker組件,命令參考上面的步驟。

3.2.1 創建jenkins slave容器鏡像

下載Agent的API如下:

GET /jnlpJars/agent.jar

使用curl命令即可下載:

mkdir -p /tmp/jenkins-agent
cd /tmp/jenkins-agent
export master=10.0.11.239:8080
curl -sO http://$master/jnlpJars/agent.jar

在這里插入圖片描述

Dockerfile內容如下:

FROM jenkins/agent:latest-jdk17USER root
ENV TZ=Asia/Shanghai
COPY agent.jar /home/jenkins
RUN chown jenkins:jenkins /home/jenkins/agent.jarRUN sed -i "s@http://\(deb\|security\).debian.org@https://mirrors.aliyun.com@g" /etc/apt/sources.list.d/debian.sources
RUN apt-get update && apt-get install -y \git \maven \curl \&& rm -rf /var/lib/apt/lists/*USER jenkins
CMD java -jar agent.jar -url $JENKINS_MASTER_URL -secret $JENKINS_SECRET -name $JENKINS_AGENT_NAME -webSocket -workDir $JENKINS_WORKDIR

在這里插入圖片描述
使用docker build命令即可,這里有一個現成的容器鏡像:

docker pull swr.cn-south-1.myhuaweicloud.com/migrator/jenkins-agent:latest-jdk17

3.2.2 創建jenkins slave容器

將slave01工作節點加入jenkins集群,依據節點加入的預配置信息填充下面的環境變量:

useradd -u 1000 -s /sbin/nologin jenkins
mkdir -p /home/jenkins/agent
chown -R jenkins:jenkins /home/jenkinsexport JENKINS_MASTER_URL=http://10.0.11.239:8080/
export JENKINS_SECRET=**************在web控制臺復制得到的密鑰**************
export JENKINS_AGENT_NAME=slave01
export JENKINS_WORKDIR=/home/jenkins/agentdocker run -d \--name jenkins-agent-test \-e JENKINS_MASTER_URL=$JENKINS_MASTER_URL \-e JENKINS_SECRET=$JENKINS_SECRET \-e JENKINS_AGENT_NAME=$JENKINS_AGENT_NAME \-e JENKINS_WORKDIR=$JENKINS_WORKDIR \
swr.cn-south-1.myhuaweicloud.com/migrator/jenkins-agent:latest-jdk17

在這里插入圖片描述
slave容器啟動后依據環境變量的信息加入jenkins集群,在jenkins控制臺可見slave工作節點已成功連接到master節點:
在這里插入圖片描述

4 小結

本文通過實戰介紹利用docker容器部署jenkins集群。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/903890.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/903890.shtml
英文地址,請注明出處:http://en.pswp.cn/news/903890.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

5月2日日記

今天看了爸爸推薦的書&#xff0c;叫&#xff1a;“高效能人士的七個習慣” 現在剛看完50頁&#xff0c;感覺確實有點東西&#xff0c; 七個習慣分別是&#xff1a; 個人層面1積極主動 2要事第一 3以終為始 社交層面 4知彼解己5 統效綜合 6雙贏思維 7不斷更新 目前還沒有…

Aws S3上傳優化

上傳大約 3.4GB 的 JSON 文件&#xff0c;zip算法壓縮后約為 395MB&#xff0c;上傳至 S3 效率優化&#xff0c;有一些優化方案可以提高上傳速率。下面是幾種可能的優化方式&#xff0c;包括選擇壓縮算法、調整上傳方式、以及其他可能的方案。 方案 1. 選擇更好的壓縮算法 壓…

CAD(計算機輔助設計)基礎知識點整理

以下是CAD&#xff08;計算機輔助設計&#xff09;的基礎知識點整理&#xff0c;涵蓋核心概念、操作技巧和行業規范&#xff0c;適合新手學習和參考&#xff1a; 一、CAD基本概念 什么是CAD ? 利用計算機技術進行設計和繪圖的工具&#xff0c;廣泛應用于機械、建筑、電子等領…

重構之道:識別并替換不合適使用的箭頭函數

1、引言 JavaScript 自 ES6 引入了箭頭函數(Arrow Function)后,因其簡潔的語法和對 this 的詞法綁定機制,迅速成為開發者喜愛的寫法之一。然而,并不是所有場景都適合使用箭頭函數。 在實際開發中,我們常常會因為追求代碼簡潔而忽視其潛在問題,例如: this 指向錯誤不適…

[英語單詞] from under

最近在看RCU的資料&#xff0c;讀到下面的一句&#xff0c;感覺總是特別怪怪的&#xff0c;就是從單詞的組合角度&#xff0c;記錄一下。 Use rcu_read_lock() and rcu_read_unlock() to ensure that the structure does not get deleted out from under us。 意思是我們還在使…

Python 中 DAO 層使用泛型的探索

方法一&#xff1a; from types import UnionType from typing import TypeVar, Generic, TypeModelT TypeVar(ModelT)def _new_cls_with_grm_generic_args(cls, __item):new_cls type(f"{cls.__name__}[{__item.__name__}]", (cls,), {})new_cls._grm_generic_ar…

Cesium 環境搭建

一、前提條件 1. **安裝 Node.js** - 訪問 [Node.js 官方網站](https://nodejs.org/)&#xff0c;下載并安裝適合你操作系統的版本。Node.js 用于運行本地開發服務器和安裝依賴。 2. **安裝 Vue CLI** - Vue CLI 是一個用于快速開發 Vue.js 項目的工具。在終端中運行以下…

DarkGS:論文解讀與全流程環境配置及數據集測試【基于Ubuntu20.04 】【2025最新實戰無坑版!!】

一、背景及意義 DarkGS是一個創新性的研究項目&#xff0c;旨在解決機器人在黑暗或低光照環境中探索的問題。傳統的3D重建和視覺定位系統在光照條件不佳時表現不佳&#xff0c;這嚴重限制了機器人在黑暗環境中的應用&#xff0c;如夜間救援、深海探索或洞穴勘測等場景。 這項工…

(八)RestAPI 毛子(Unit Testing/Integration)

文章目錄 項目地址一、Unit Testing1.1 創建X unit 測試項目1. 創建項目目錄2. 管理包1.2 創建CreateEntryDtoValidator測試1.3 創建CreateEntryDtoValidator測試二、Integration test2.1 創建Integration test環境1. 安裝所需要的包2.2 配置基礎設置1. 數據庫鏈接DevHabitWebA…

設計模式--橋接模式詳解

橋接模式&#xff08;bridge pattern&#xff09; 橋接模式時將抽象部分與它的實現部分分離&#xff0c;使他們可以獨立的變化。它是一種對象結構型模式&#xff0c;又稱為柄體&#xff08;Handle and Body&#xff09;模式或者接口&#xff08;interface&#xff09;模式&…

關于 live555延遲優化之緩存區優化“StreamParser::afterGettingBytes() warning: read”” 的解決方法

若該文為原創文章&#xff0c;轉載請注明原文出處 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/146354088 長沙紅胖子Qt&#xff08;長沙創微智科&#xff09;博文大全&#xff1a;開發技術集合&#xff08;包含Qt實用技術、樹莓派、三維、OpenCV…

Vite 動態導入靜態資源與自動依賴發現實戰解析

一、Vite 動態導入靜態資源的實現方案 在 Vite 中&#xff0c;動態加載圖片、JSON 等靜態資源是高頻需求&#xff0c;但動態路徑拼接可能導致構建失敗或資源未識別。以下結合示例代碼&#xff0c;分析三種實現方案&#xff1a; 1. 方案一&#xff1a;new URL 動態路徑轉換 通…

在matlab中使用UAV123官方toolkits測試自己的數據集

一、前言 最近需要將自己的跟蹤代碼在自己拍攝的數據集上進行測試&#xff0c;這里我選擇使用 UAV123 官方 toolkits 進行配置。首先需要搞清楚這部分代碼是如何運行的&#xff0c;精度圖和成功率圖是如何繪制出來的&#xff0c;然后再將自己的數據集加進去進行測試。 二、UA…

9.idea中創建springboot項目_jdk1.8

9. idea中創建springboot項目_jdk1.8 步驟 1&#xff1a;打開 IntelliJ IDEA 并創建新項目 啟動 IntelliJ IDEA。在歡迎界面&#xff0c;點擊 New Project&#xff08;或通過菜單欄 File > New > Project&#xff09;。 步驟 2&#xff1a;選擇 Maven 項目類型 在左側…

SpringAI實現AI應用-搭建知識庫

SpringAI實戰鏈接 1.SpringAl實現AI應用-快速搭建-CSDN博客 2.SpringAI實現AI應用-搭建知識庫-CSDN博客 概述 想要使用SpringAI搭建知識庫&#xff0c;就要使用SpringAI中的TikaDocumentReader&#xff0c;它屬于ETL&#xff08;提取、轉換、加載&#xff09;框架中的提取&…

內網服務器映射到公網上怎么做?網絡將內網服務轉換到公網上

如何將內網映射到公網&#xff1f;本地局域網的網絡下部署的內網服務地址轉換到公網上連接訪問是大家比較關注的問題&#xff0c;特別是在無公網IP使用的情況下&#xff0c;很多人不知道怎么做。 在沒有公網 IP 的情況下&#xff0c;要將內網映射到公網&#xff0c;以便外網能…

intellij idea最新版git開啟Local Changes

習慣了在idea的git插件里&#xff0c;查看項目已修改的文件&#xff0c;但是新版idea默認不展示了&#xff0c;用起來很難受。 參考網上教程開啟方法如下&#xff1a; 1. 確保安裝Git Modal Commit Interface插件并開啟該插件 2. 在Advanced Settings開啟Use Modal Commit In…

??智能制造中的預測性維護:基于深度學習的設備故障預測??

智能制造中的預測性維護:基于深度學習的設備故障預測 引言 在智能制造領域,設備突發故障可能導致巨大的經濟損失。傳統維護方式(如定期檢修或事后維修)往往效率低下且成本高昂。預測性維護(Predictive Maintenance, PdM)通過實時監測設備狀態并預測潛在故障,能夠顯著減…

DeepSeek+即夢:AI視頻創作從0到1全突破

目錄 一、開啟 AI 視頻創作大門&#xff1a;前期準備1.1 注冊與登錄1.2 熟悉工具界面1.3 硬件與網絡要求 二、用 DeepSeek 構思視頻腳本2.1 明確創作主題與目標2.2 編寫優質提示詞2.3 生成并優化腳本 三、即夢 AI 實現畫面生成3.1 文生圖基礎操作3.2 調整參數提升畫質3.3 保持人…

初始化列表詳解

1.類中包含以下成員&#xff0c;必須放在初始化列表位置進行初始化&#xff1a; 1. 引用成員變量 2.const成員變量 3. 自定義類型成員(且該類沒有默認構造函數時 ) 2. 成員變量在類中聲明次序就是其在初始化列表中的初始化順序&#xff0c;與其在初始化列表中的先后次序無關…