在 CI/CD 流程中使用 Jenkins 與 Docker 集成

在 CI/CD 流程中,Jenkins 與 Docker 的集成可以實現自動構建、測試、打包、發布容器鏡像,并部署到測試/生產環境。下面是從概念到落地操作的完整集成方案


一、常見的集成方式有哪些?

方式描述
1?? Jenkins 主機安裝 DockerJenkins 可以直接執行構建鏡像、運行容器等命令
2?? 使用 Docker-in-Docker(DinD)Jenkins 容器內部執行 Docker 命令,適用于容器化 Jenkins
3?? 使用 Jenkins Docker 插件動態拉起 Docker 容器作為 Agent

二、使用 Jenkins + Docker 實現 CI/CD:流程圖

Push Code → Jenkins 觸發 → 構建 Docker 鏡像 → 單元測試 → 推送鏡像到 Registry → 遠程部署(K8s 或 Docker 運行)

三、準備工作

🔧 1. Jenkins 安裝 Docker

確保 Jenkins 所在主機已安裝 Docker 且 Jenkins 有權限使用:

# 安裝 Docker(Ubuntu 示例)
sudo apt update && sudo apt install -y docker.io# 添加 Jenkins 用戶到 docker 組
sudo usermod -aG docker jenkins
sudo systemctl restart docker

?? 需要重啟 Jenkins 服務,使組權限生效。


四、Jenkins Pipeline 示例(核心部分)

📄 Jenkinsfile 示例:

pipeline {agent anyenvironment {REGISTRY = "registry.mycompany.com"IMAGE_NAME = "myapp"IMAGE_TAG = "v1.0.${BUILD_NUMBER}"}stages {stage('Checkout') {steps {checkout scm}}stage('Build Docker Image') {steps {sh """docker build -t ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} ."""}}stage('Push to Registry') {steps {withCredentials([usernamePassword(credentialsId: 'docker-registry', usernameVariable: 'USER', passwordVariable: 'PASS')]) {sh """echo "$PASS" | docker login ${REGISTRY} -u "$USER" --password-stdindocker push ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}"""}}}stage('Deploy') {steps {sh """docker pull ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}docker stop myapp || truedocker rm myapp || truedocker run -d --name myapp -p 8080:8080 ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}"""}}}
}

五、Jenkins 插件推薦(可選)

插件名稱用途
Docker Pipeline Plugin支持在 Pipeline 中使用 docker.image(...) 等方法
Docker Commons Plugin處理鏡像標簽和憑據
Docker API Plugin調用 Docker API
Pipeline Utility Steps處理 JSON/YAML 等輔助功能

六、構建參數支持(多環境發布)

parameters {choice(name: 'ENV', choices: ['dev', 'test', 'prod'], description: '部署環境')
}

配合 docker-composek8s 可實現灰度、藍綠、生產環境等部署策略。


七、最佳實踐小結

建議描述
? 鏡像打 Tag 用 v1.0.$BUILD_NUMBER便于版本追蹤
? 用 .dockerignore 文件降低構建上下文大小
? 鏡像推送前加安全掃描(如 Trivy)提前發現漏洞
? 部署使用 docker-compose 或 SSH 發布腳本簡化操作

八、補充:Docker in Docker(Jenkins 容器中構建鏡像)

如果 Jenkins 自身運行在 Docker 容器里,還需要掛載宿主 Docker:

docker run -d \-v /var/run/docker.sock:/var/run/docker.sock \-v jenkins_home:/var/jenkins_home \jenkins/jenkins:lts

九、總結一句話:

Jenkins 與 Docker 集成,可以將代碼自動構建成鏡像,推送到鏡像倉庫,并實現遠程自動部署,構建起現代 CI/CD 的主干流程。


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

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

相關文章

閑庭信步使用SV搭建圖像測試平臺:第十課——繼續說說類

(本系列只需要modelsim即可完成數字圖像的處理,每個工程都搭建了全自動化的仿真環境,只需要雙擊top_tb.bat文件就可以完成整個的仿真,大大降低了初學者的門檻!!!!如需要該系列的工程…

如何改進復雜推理 - 從提示詞設計入手

引言(動機) 在使用大語言模型(如 GPT-4、Claude、DeepSeek 等)構建智能問答、輔助決策或復雜任務代理系統時,可能遇到這些問題: 模型回答跳步驟、思路混亂同樣問題,模型表現高度不穩定新任務一…

如何解決和各個經銷商不同軟件對接的問題?湯臣案例分享

一、項目背景 湯臣倍健作為健康產品行業的領軍企業,其營銷云系統與全國經銷商 ERP 系統的數據無縫對接,對于提升業務運營效率和營銷精準度至關重要。傳統數據集成方法在面對經銷商 ERP 系統的多樣性和復雜性時,暴露出諸多問題,如…

Wordvice AI:Wordvice 推出的免費,基于先進的 AI 技術幫助用戶提升英文寫作質量

Wordvice AI:智能寫作助手,助力高效英文寫作 在當今全球化時代,英文寫作已成為眾多學生、研究人員、職場人士必備技能。然而,語法錯誤、表達不流暢、詞匯匱乏等問題常困擾著大家。別擔心,今天就來給大家介紹一款強大的…

【UE5】如何開發安卓項目的udp客戶端

1關于如何打包安卓項目這里就不贅述了 2代碼舉例。最重要的就是這兩句 #if PLATFORM_ANDROID #endif#if PLATFORM_WINDOWS #endif全部代碼如下: Button_Sheng.h: // Fill out your copyright notice in the Description page of Project Settings.#pragma once#in…

2025年6月21和22日復習和預習(python)

一、作業內容 (一)知識點回顧 用戶輸入處理 使用input()函數獲取用戶輸入的字符串,并存儲到變量中。 條件判斷語句 if-elif-else結構:根據不同條件執行相應代碼塊,適用于多分支判斷。 語音合成技術 導入pyttsx3庫實現…

Vue 樣式穿透語法大全(涵蓋 Vue2、Vue3、Less、Scss 等)

1. 什么是樣式穿透? 樣式穿透是在使用 Vue 組件時,為了修改子組件或第三方組件的樣式而使用的一種特殊語法。當我們使用 scoped 樣式時,由于樣式被限制在當前組件內,要修改子組件的樣式就需要使用樣式穿透。 2. 為什么需要樣式穿…

Python 屬性查找:深入理解__getattribute__與__getattr__

目錄 一、__getattribute__方法詳解 1.1 基本概念 1.2 示例分析 1.3 注意事項 二、__getattr__方法詳解 2.1 基本概念 2.2 示例分析 2.3 注意事項 三、__getattribute__與__getattr__的區別對比 3.1 調用時機 3.2 應用場景 3.3 性能影響 四、屬性查找順序 屬性查找…

打表法從原理到實戰詳解

打表法結合經典案例從原理到實戰詳解 一、打表法基本信息1.1 打表法定義1.2 打表法適用場景1.3 打表法的優缺點 二、打表法經典案例解析2.1 快速計算斐波那契數列2.1.1 問題描述2.1.2 打表思路2.1.3 Java代碼實現2.1.4 復雜度分析 2.2 快速判斷質數(埃氏篩法結合打表…

(LeetCode 面試經典 150 題 )121. 買賣股票的最佳時機 (遍歷)

題目&#xff1a;121. 買賣股票的最佳時機 思路&#xff1a;遍歷&#xff0c;維護已遍歷過的元素中的最小值&#xff0c;時間復雜度0(n)。 C版本&#xff1a; class Solution { public:int maxProfit(vector<int>& prices) {int mnprices[0];int mx0;for(int i1;i&…

(洛谷)P4447 [AHOI2018初中組] 分組

題目描述 小可可的學校信息組總共有 n 個隊員&#xff0c;每個人都有一個實力值 ai?。現在&#xff0c;一年一度的編程大賽就要到了&#xff0c;小可可的學校獲得了若干個參賽名額&#xff0c;教練決定把學校信息組的 n 個隊員分成若干個小組去參加這場比賽。 但是每個隊員都…

PLA/PHA生物降解化妝品包裝材料的穩定性與貨架期契合性研究

更多案例&#xff1a;https://npmatc.niicapm.com/ 在可持續發展理念的推動下&#xff0c;化妝品行業正經歷一場綠色變革。環保聚合物在包裝領域的應用已成為重要趨勢&#xff0c;這不僅源于消費者對生態友好產品的需求&#xff0c;更基于全球塑料污染治理的緊迫性。化妝品包裝…

STM32[筆記]--4.嵌入式硬件基礎

4.嵌入式硬件基礎 4.1認識上官二號開發板 主控芯片:STM32F103C8T6高速晶振:8M低速晶振:32.768kLED:5顆KEY:3個 主控芯片內部的資源如下項目介紹內核Cortex-M3Flsah64K*8bitSRAM20K*8bitGPIO37個GPIO,分別為PA0-PB15,PC13-PC15,PD0-PD1ADC2個12bitADC合計12了通道,外部通…

【LLaMA-Factory 實戰系列】一、數據準備篇 - 從文本到多模態的完整流程

【LLaMA-Factory 實戰系列】一、數據準備篇 - 從文本到多模態的完整流程 1. 引言2. LLaMA-Factory 數據格式概述2.1 Alpaca 格式2.2 ShareGPT 格式 3. 文本數據準備3.1 Alpaca 格式示例3.2 ShareGPT 格式示例3.3 預訓練數據格式 4. 多模態數據準備4.1 圖像數據準備4.2 視頻數據…

JuiceFS 集群部署詳細指南:使用 SeaweedFS 作為數據存儲,ETCD 作為元數據存儲

1. 概述 本指南將詳細介紹如何部署一個 JuiceFS 集群,其中數據存儲層采用高性能的分布式對象存儲 SeaweedFS,元數據存儲層采用強一致性的分布式鍵值存儲 ETCD。這種組合方案旨在為用戶提供一個高性能、高可用、易于擴展且數據強一致的分布式文件系統解決方案,特別適用于云原…

【數字后端】- 什么是NDR規則?

NDR是指與工藝庫的默認規則&#xff08;DR&#xff09;不同的特殊物理規則&#xff1a; 常見的有&#xff1a; 間距規則&#xff08;spacing&#xff09;&#xff1a;增加信號線與鄰近線之間的距離&#xff0c;降低Crosstalk串擾。線寬規則&#xff08;width&#xff09;&…

B2B 商城定制的優勢:解鎖企業數字化轉型新動力

精準適配業務流程&#xff0c;貼合企業運營特色? 每一家企業都有獨特的業務流程、運營模式與管理需求。標準化的 B2B 商城往往難以完全滿足企業個性化的業務需求&#xff0c;而定制化商城則能夠深入剖析企業業務細節&#xff0c;從采購、銷售、庫存管理到財務管理等全流程&am…

osg實例繪制

#include <osg/Geometry> #include <osg/Geode> #include <osg/Program> #include <osg/VertexAttribDivisor> #include <osgViewer/Viewer> #include <osgViewer/ViewerEventHandlers> #include <random> // 創建單個立方體幾何體&…

Qt面試題匯總

目錄 1. 簡單說一下Qt 2. 用過QT中的哪些模塊&#xff1f; 3. 說一些你常用的Qt控件&#xff1f; 4. Qt中如何創建一個窗口&#xff1f; 5. 說一下QT中創建控件的方式? 6. 說一下Qt中信號和槽機制是什么&#xff1f; 7. 說一下QT信號與槽機制原理&#xff1f; 8. 如何自…

【stm32】標準庫學習——USART串口

目錄 一、USART串口 1.串口參數及時序 2.USART簡介 3.配置USART基本結構 4.初始化模板 (1) 接收一個數據 (2) 發送一個數據 一、USART串口 1.串口參數及時序 波特率:串口通信的速率起始位:標志一個數據幀的開始&#xff0c;固定為低電平數據位:數據幀的有效載荷&#…