当前位置: 首页 > news >正文

在 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 的主干流程。


相关文章:

  • 内存的代价:如何正确与 WASM 模块传值交互
  • 大内存对电脑性能有哪些提升
  • Redis ⑩-持久化 || RDB
  • 算法-每日一题(DAY11)每日温度
  • 【VUE】某时间某空间占用情况效果展示,vue2+element ui实现。场景:会议室占用、教室占用等。
  • MySQL基础多表查询
  • uniapp实现像qq消息列表左滑显示右侧操作栏效果
  • Qt—(Qt线程,Qt进程,,QT与sqlite数据库)
  • 学习华为 ensp 的学习心得体会
  • SP-VLA:一种用于 VLA 模型加速的联合模型调度和 token 剪枝方法
  • 力扣-136.只出现一次的数字
  • C语言:二分搜索函数
  • linux中的数据检索
  • mysql查询使用`_rowid` 虚拟列
  • iOS APP上架App Store实践:通过自动化流程和辅助工具高效提
  • 【Python】.pyz:源码与依赖打包
  • IPv6 | 地址解析 / 地址管理 / 邻居发现协议(NDP)/ 无状态自动配置(SLAAC)
  • Spring Boot自动配置原理
  • Spring Boot + MyBatis + Vue:全栈开发中的最佳实践
  • ASP3605芯片在煤炭设备电源管理中的可靠性设计与应用探索
  • 江苏优化网站公司哪家好/站长查询域名
  • 山东济南建网站公司/域名注册
  • 平面广告设计培训招生/百度爱采购优化排名软件
  • 响应式网页设计技术/seo案例分析
  • 山西晋中网站建设/seo新手教程
  • 设计网站特点/关键词推广软件