使用 Jenkins 管道在 Docker Hub 中构建 Docker 镜像

Jenkins Pipeline 是一个强大的工具,可以自动执行部署。在各个阶段之间拆分的灵活和自定义操作是尝试此功能的一个很好的理由。

构建您自己的 Docker 镜像并将其上传到 Docker Hub 以保持存储库更新是了解 Jenkins Pipeline 如何改进您的工作方式的一个很好的示例。

条件

  • 运行 Jenkins 和 Docker 的服务器(应允许 Jenkins 用户运行 Docker)
  • GitHub 帐户
  • Docker Hub 帐户

为什么要使用 Docker Hub?

在 Docker Hub 中构建 Docker 镜像具有多种优势。它特别有利于实现软件开发的持续集成 (CI) 和持续部署 (CD) 系统。以下是使用 Docker Hub 部署 Docker 镜像的一些优势。

  • 协作:自定义 Docker 镜像可以在从事同一项目的不同开发人员之间共享,因此有助于团队内更好的协作。
  • 自动化:Docker Hub 简化了开发管道和工作流的过程,并确保了持续的 Docker 镜像更新。
  • 安全性:Docker Hub 提供必要的安全性,以帮助保护 docker 镜像免受已知漏洞的侵害。
  • 可移植性:Docker 镜像可以在任何支持 Docker 的环境或平台上运行。

如何使用 Jenkins 管道在 Docker Hub 中构建 Docker 镜像

1. 设置环境

在 Jenkins 上安装 Docker Pipelines 插件:

管理 Jenkins →管理插件。

搜索 Docker Pipelines,单击“安装而不重启”,然后等待完成。

将 Dockerfile 定义上传到 GitHub 存储库。单击绿色按钮“克隆或下载”,然后复制 URL。

例 Github 存储库


在 Jenkins 上,需要使用 Docker Hub 帐户详细信息创建新凭据。转到“凭据”→全局→“添加凭据”,然后使用您的用户名和密码填写表单。填写 ID 和描述。请注意,如果设置了 ID,则需要此特定 ID 才能从脚本中引用此凭据。在这里,我们只是使用dockerhub_id

Docker 中心 ID

2. 创建第一个 Jenkins 管道

现在,我们已准备好创建第一个管道。在 Jenkins 上,转到“新建项→管道”,键入此管道项目所需的名称,然后单击“确定”。

创建 Jenkins 管道

之后,您可以跳过所有“常规”和“生成触发器”选项,直接转到“管道”部分。在这里,您可以包含一个 Pipeline 定义(通常命名为 Jenkinsfile),也可以引用外部位置,如 Git 或 Subversion。

3. 定义 Jenkins 流水线

以下代码片段,声明了 Jenkins Pipline 以从 GitHub 存储库构建 Docker 镜像:

pipeline {
  environment {
      registry = "YourDockerhubAccount/YourRepository"
      registryCredential = 'dockerhub_id'
      dockerImage = ''
  }

  agent any
  stages {
      stage('Cloning our Git') {
          steps {
              git 'https://github.com/YourGithubAccount/YourGithubRepository.git'
          }
      }
      stage('Building our image') {
          steps {
              script {
                  dockerImage = docker.build registry + ":$BUILD_NUMBER"
              }
          }
      }
      stage('Deploy our image') {
          steps {
              script {
                  docker.withRegistry( '', registryCredential ) {
                      dockerImage.push()
                  }
              }
          }
      }
      stage('Cleaning up') { 
          steps { 
              sh "docker rmi $registry:$BUILD_NUMBER" 
          }
      }
  }
}

请注意,需要使用特定的 Docker Hub 和 GitHub 详细信息修改上述代码: 在这里,我们定义的管道有四个阶段:

  • 第一个是从我们的 GitHub 存储库中获取。Dockerfile
  • 第二个将用于标记版本来构建镜像。$BUILD_NUMBER
  • 第三个是将生成的镜像推送到 Docker Hub 注册表。
  • 最后,我们将清理之前在本地服务器上构建的镜像。

4. 运行管道并生成镜像

现在,我们已准备好运行 Pipeline 并检查输出,如果运行期间的任何阶段都存在错误。
转到 Jenkins 上的 Pipeline 项目,然后单击 Build Now 以手动运行。您应该获得类似于以下阶段的不同阶段的顺序输出:

Docker 管道



如果一切正常,可以检查 Docker Hub 存储库中的新镜像,该镜像标记有与 Docker Hub 注册表匹配的 Jenkins 构建版本:

Docker Hub 存储库


这是如何使用 Pipelines 和集成部署的不同组件的基本示例。

最后的思考

在本文中,我们演示了在 Docker Hub 中使用 Jenkins 构建 Docker 镜像的简单过程。在进行过程中,可以通过管道创建许多复杂的集成。

使用 Jenkins 的一些想法:

  • 定义一个 Webhook,以便在提交提交到 GitHub 存储库时运行管道。
  • 在同一管道中包含多个容器,以保留不同的阶段(如后端和前端)或不同的环境(开发/生产)
  • 通过电子邮件/电报/Slack 设置通知,其中包含管道的状态和/或输出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/456603.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Oracle Primavera P6 Analytics 是什么,与P6的关系?

前言 Oracle Primavera P6 Analytics 是与P6有关的一个相对较新的模块,Primavera 用户社区在很大程度上尚未对其进行探索。 那么它到底有什么作用呢? 通过了解得知它旨在通过深入了解组织的项目组合绩效,帮助高级管理层对其项目组合做出更好…

DM数据库安装(Windows)

先解压安装包 点击setup安装 下一步 勾选接受然后下一步 下一步 选择典型安装下一步 下一步 搜索DM数据库配置助手然后一直下一步 然后搜索DM管理工具 登录 登录成功 widows版本安装成功

热门骨传导耳机深度评测:南卡、韶音、墨觉全面对比分析!

蓝牙耳机现在已经融入了我们的日常生活,尤其对于运动爱好者而言,一款好的蓝牙耳机不仅能够丰富锻炼时的听觉体验,还能激发运动热情。而骨传导耳机凭借着创新的设计理念和听音方式广受欢迎。骨传导耳机的优势可以让用户在听音乐的同时保持对周…

C++训练营:引用传递

大家好: 衷心希望各位点赞。 您的问题请留在评论区,我会及时回答。 一、引用传递 简单来说,“引用”就是给已有的变量起一个别名。引用并没有自己单独的内存空间,作为引用,它和原变量共用一段内存空间。引用的定义格…

程序员想要搞钱不迷茫,这篇文章你可得码好啦!!!

年已经过完了,现在大家基本都已经返工返校了吧!咱又要投入到新一年的战斗了!春色恼人不等闲,相信咱都有一个实实在在的愿望和期许:身体健康,财源广进!新的一年我们还得继续努力,多多…

Linux:设置别名命令alias

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 在Linux中alias命令用于为一串字符(常代表命令)设置一个别名,该别名在Bash读取并解析一行命令时会被展开。 下面是该命令的语法。 用…

IPFoxy的正确打开方式

IPFoxy是一个全球动静态代理IP服务器软件,为全球用户提供优质的大数据代理服务,促进网络业务高校进行。目前拥有千万真实纯净IP资源,覆盖超过220个国家和地区,汇聚成优质海外代理池,支持http、https、socks5多种协议类…

WPF —— Grid网格布局

1 :Grid网格布局简介 Grid为WPF中最常用的布局容器, 作为View中的主要组成部分, 负责框架中整体的页面布局。 2:网格标签Grid.ColumnDef Grid.ColumnDefinitions自定义列 只能设置宽度 不能设置高度ColumnDefinition 每一个列可以设置宽度,…

计数类Dp

文章目录 AcWing 900. 整数划分思路1. 完全背包AC CODE 2. 计数DpAC CODE AcWing 900. 整数划分 链接:https://www.acwing.com/activity/content/problem/content/1008/ 思路 1. 完全背包 完全背包的链接:https://blog.csdn.net/2301_78981471/artic…

安装小知识:无源无线测温传感器可以安装在哪些部位?

一、无源无线测温传感器介绍 无源无线测温传感器采用超低功耗设计:主芯片采用美国TI公司,功耗低,低可至0.03mw,区别于传统的感应供电,不存在发热现象。测温元件采用耐高温、高精度热敏电阻,测温范围宽至-40…

ETH共识升级之路

简介 根据我们之前的介绍,了解到ETH网络的共识方式,已经从 PoW 切换到了 PoS,今天我们就回顾下升级之路,以及升级带来的影响 最早的共识机制 PoW 以太坊创建之初采用了类似比特币的工作量证明机制,即矿工通过计算哈希函…

案例分析篇12:可靠性设计考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

爬虫入门到精通_框架篇18(Scrapy中选择器用法)_sector,xpath,css,re

官方文档 Using selectors To explain how to use the selectors we’ll use the Scrapy shell (which provides interactive testing) and an example page located in the Scrapy documentation server: https://docs.scrapy.org/en/latest/_static/selectors-sample1.html…

LeetCode.2864. 最大二进制奇数

题目 2864. 最大二进制奇数 分析 这道题目其实我们只需要保证最后一位是1,其余的1都放在最前面,这样得到的就是最大二进制奇数。 所以,我们先统计给定的字符串有多少个 1,多少个 0,把其中一个 1 放在最后一位&…

使用STM32+ESP8266(ESP-01S)+点灯科技(手机端Blinker)实现远程控制智能家居

硬件准备:STM32单片机、ESP8266(ESP-01S)、CH340C下载烧录器 软件准备:STM32CubeMX、Keil uVision5、Arduino IDE、 点灯科技(手机端APP Blinker)点灯科技 (diandeng.tech)点击进入 值得注意的是&#x…

工业界真实的推荐系统(小红书)-用户行为序列建模:LastN、DIN、SIM

课程特点:系统、清晰、实用,原理和落地经验兼具 b站:https://www.bilibili.com/video/BV1HZ421U77y/?spm_id_from333.337.search-card.all.click&vd_sourceb60d8ab7e659b10ea6ea743ede0c5b48 讲义:https://github.com/wangsh…

武汉灰京文化:RPG手游营造的奇幻世界

近年来,RPG手游在游戏市场上异军突起,成为年轻玩家追逐的焦点。这类游戏以其深度的游戏体验和吸引人的故事情节,吸引了大批玩家投入其中。那么,为何热衷于RPG手游?本文武汉灰京文化将从社交互动、沉浸式体验、成就感和…

压缩json字符串

GZIPOutputStream 需要关闭,而 ByteArrayOutputStream 不需要关闭。具体原因如下: GZIPOutputStream:GZIPOutputStream是一种过滤流,它提供了将数据压缩为GZIP格式的功能。当使用此类的实例写入数据时,它会对数据进行压…

C++ 网络编程学习五

C网络编程学习五 网络结构的更新单例模式懒汉单例模式饿汉单例模式懒汉式指针智能指针设计单例类 服务器优雅退出asio的多线程模型IOServiceasio多线程IOThreadPoolepoll 和 iocp的一些知识点 网络结构的更新 asio网络层,会使用io_context进行数据封装,…

pgsql常用索引简写

文章来源:互联网博客文章,后续有时间再来细化整理。 在数据库查询中,合理的使用索引,可以极大提升数据库查询效率,充分利用系统资源。这个随着数据量的增加得到提升,越大越明显,也和业务线有关…
最新文章