Docker最全教程——从理论到实战(九)

在本系列教程中,笔者希望将必要的知识点围绕理论、流程(工作流程)、方法、实践来进行讲解,而不是单纯的为讲解知识点而进行讲解。也就是说,笔者希望能够让大家将理论、知识、思想和指导应用到工作的实际场景和实践之中,而不是拿着字典写文章,抱着宝典写代码。至于很多具体的语法、技术细节,除了常用的知识点,笔者更希望大家阅读官方文档——毕竟看官网比看书靠谱多了,官网会一直更新和改进,而书和教程自出版或发布之后,基本上就“死“了。

本系列教程预计全部完成还需要2到3个月的时间。在这个过程中,您可以加入我们的QQ群(85318032)一起讨论、交流和分享这一块的技术。我们也希望得到大家的支持,请多多点赞或者打赏一杯咖啡,你们的支持是我们前进的最大动力!



◆◆使用Azure DevOps来完成CI◆◆

Azure DevOps,以前叫VSTS,现在被微软改名部正式更名为Azure DevOps,说明微软云为先之心仍然蠢蠢欲动。不过和VSTS一样,微软都提供了免费的使用额度,对于小团队和个人开发者来说,完全是足够了。


640?wx_fmt=png



什么是DevOps?

DevOpsDevelopmentOperations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它是一种重视“软件开发人员(Dev“IT运维技术人员(Ops之间沟通合作的文化、运动或惯例。透过自动化软件交付架构变更的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。


640?wx_fmt=png

DevOps的引入能对产品交付、测试、功能开发和维护(包括──曾经罕见但如今已屡见不鲜的──“热补丁)起到意义深远的影响。在缺乏DevOps能力的组织中,开发与运营之间存在着信息鸿沟”──例如运营人员要求更好的可靠性和安全性,开发人员则希望基础设施响应更快,而业务用户的需求则是更快地将更多的特性发布给最终用户使用。这种信息鸿沟就是最常出问题的地方。

640?wx_fmt=png


DevOps经常被描述为开发团队与运营团队之间更具协作性、更高效的关系。由于团队间协作关系的改善,整个组织的效率因此得到提升,伴随频繁变化而来的生产环境的风险也能得到降低。

总之,通过DevOps,各专业团队之间的协调和协作得到改善,缩短了将更改提交到系统与将更改投入到生产之间的时间。它还可确保此过程符合安全性和可靠性标准。结果:产品质量改善、交付速度加快、客户满意度提升。



 DevOps对应用程序发布的影响



在很多企业中,应用程序发布是一项涉及多个团队、压力很大、风险很高的活动。然而在具备DevOps能力的组织中,应用程序发布的风险很低,原因如下

1. 减少变更范围

与传统的瀑布式开发模型相比,采用敏捷或迭代式开发意味着更频繁的发布、每次发布包含的变化更少。由于部署经常进行,因此每次部署不会对生产系统造成巨大影响,应用程序会以平滑的速率逐渐生长。


2. 加强发布协调

靠强有力的发布协调人来弥合开发与运营之间的技能鸿沟和沟通鸿沟;采用电子数据表、电话会议、即时消息、企业门户(wikisharepoint)等协作工具来确保所有相关人员理解变更的内容并全力合作。


3. 自动化

强大的部署自动化手段确保部署任务的可重复性、减少部署出错的可能性。

与传统开发方法那种大规模的、不频繁的发布(通常以“季度”或“年”为单位)相比,敏捷方法大大提升了发布频率(通常以“天”或“周”为单位)。减少变更范围与传统的瀑布式开发模型相比,采用敏捷或迭代式开发意味着更频繁的发布、每次发布包含的变化更少。由于部署经常进行,因此每次部署不会对生产系统造成巨大影响,应用程序会以平滑的速率逐渐生长。加强发布协调靠强有力的发布协调人来弥合开发与运营之间的技能鸿沟和沟通鸿沟;采用电子数据表、电话会议、即时消息、企业门户(wikisharepoint)等协作工具来确保所有相关人员理解变更的内容并全力合作。强大的自动化部署手段能够确保部署任务的可重复性、减少部署出错的可能性。


适用于容器的 CI/CD 流程


使用容器,可轻松地持续生成和部署应用程序。

Azure DevOps 可以通过设置持续版本以生成容器映像和业务流程,让我们能更快、更可靠地进行部署。以下是一个适用于容器和Azure的CI/CD 流程:

640?wx_fmt=png



步骤说明:

640?wx_fmt=png



使用Azure DevOps来配置一个简单的CI流程


Azure DevOps服务涵盖了整个开发生命周期,可帮助开发人员更快地高质量地交付软件,其提供了Azure PipelinesAzure BoardsAzure ArtifactsAzure ReposAzure Test Plans。关于Azure DevOps我们就介绍到这里,毕竟是免费介绍。

现在,我们需要侧重介绍的是Pipelines,也就是代码流水线。看,多形象,所以以前自诩为码农是错误的,我们应该是码工,广大流水线工人的一环,无产阶级之一,共产主义接班人。不好意思,又偏题了,我们继续:

640?wx_fmt=png


首先,我们需要定义一个流水线,为了便于演示,我这里就定义一些针对Docker的简单步骤,大家可以按需添加步骤,比如单元测试步骤等等。


640?wx_fmt=png


如图所示,步骤很简单,首先设置代码源,这里我们直接对接Magicodes.Admin框架的git库地址。Git库地址大家可以在这里找到:

https://gitee.com/xl_wenqiang/Magicodes.Admin.Core

640?wx_fmt=png


因为代码是托管再码云,所以我们选择如上图所示的最后一种方式,并且选择对应的分支。

接下来,我们需要添加job和taskjob添加一个默认的即可,无需设置什么条件和参数。接下来我们添加task,实际上就是步骤。

第一步,构建镜像。

我们需要添加一个docker task:

640?wx_fmt=png


然后设置command命令为build,也就是构建:

640?wx_fmt=png


640?wx_fmt=png


构建配置我们可以根据自己的需求来设置,比如根据分支设置镜像版本等等。

第二步,登录腾讯云镜像仓库并且推送。

这一步,就有点门槛了,原生的docker命令并不好使,因为task之间的上下文是断开的,也就是login了你也没法push。这时候,还是命令行靠谱,简单粗暴。所以我们需要添加一个Command line task:

640?wx_fmt=png


然后编写命令脚本:

640?wx_fmt=png


简单粗暴的两个步骤就搞定了,大家可以根据自己的持续集成流程来定制,毕竟微软在开发者服务这块淫荡多年,还是相当给力的。我们可以初步看看支持的task:

640?wx_fmt=png


非常之多,足够我们随便玩了。而且玩坏了还不用赔钱。

接下来,跑起来:

640?wx_fmt=png


点开还能看到详细的过程:

640?wx_fmt=png


640?wx_fmt=png


激不激动,简单不简单?就这么几下就搞定了。产品很强大,就是拉取代码有点慢,看起来是托管在国外。顺手一查,额,美国:

640?wx_fmt=png

因此,我们不是很推荐使用Azure DevOps来完成CI,网络的延迟足够拖垮我们焦虑的神经。但是如果我们的代码托管在Github,那么使用Azure DevOps是不错的选择。在接下来的教程中,我们会讲解如何打造自己的Github开源库的CI流程——不仅完全自动化,而且还支持在readme页面添加各种动态图标。


相关文章


Docker最全教程——从理论到实战(一)

Docker最全教程——从理论到实战(二)

Docker最全教程——从理论到实战(三)

Docker最全教程——从理论到实战(四)

Docker最全教程——从理论到实战(五)

Docker最全教程——从理论到实战(六)

Docker最全教程——从理论到实战(七)

Docker最全教程——从理论到实战(八)    

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[2019CSP多校联赛普及组第五周] 调度CPU (贪心)

来来来,走过路过不要错过题目题解代码实现1代码实现2题目 ⼩Y同学有⼀块超级CPU,它有两个超级核⼼A和B。 A核⼼可以同时处理多项任务,每项任务处理时间为x,B核⼼只能同时处理⼀项任务,每项任务处理时间为y。 这⼀天…

NumSharp v0.6.1 科学计算库发布,支持标量和隐式转换

NumSharp(Numerical .NET)可以说是C#中的科学计算库。 它是用C#编写的,符合.netstandard 2.0库标准。 它的目标是让.NET开发人员使用NumPy的语法编写机器学习代码,从而最大限度地借鉴现有大量在python代码的…

[Luogu2279][HNOI2003] 消防局的设立

文章目录题目法一:树上DP思路代码实现法二:贪心 搜索思路代码实现题目 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地。起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两个基…

dnSpy 强大的.Net反编译软件

一说起.net的反编译软件,大家首先想到的就是Reflector,ILSpy,dotPeek等等。而dnSpy同样是一款优秀的反编译软件,同时它是开源免费的。官方的描述是: dnSpy是一个调试器和.NET组件编辑器。 即使您没有任何可用的源代码,…

小奇探险

文章目录题目题解代码实现题目 小奇去遗迹探险,遗迹里有N个宝箱,有的装满了珠宝,有的装着废品。 小奇有地图,所以它知道每一个宝箱的价值,但是它不喜欢走回头路,所以要按顺序拿这N个宝箱中的若干个。 拿宝…

基于Asp.Net Core打造轻量级内部服务治理RPC(二 远程服务设计)

紧接上一篇《基于Asp.Net Core打造轻量级内部服务治理RPC(一)》文章。本文主要讲解基于Asp.Net Core的远程服务设计和实现。在上一篇中讲过,服务提供者提供的服务实际上就是一个Controller,那么是否在该程序中,服务都按照Asp.Net Core 中的Web Api的方式…

[NOIP 2009 提高组]最优贸易

勤劳的一更题目题解代码实现题目 C国有 n个大城市和 m 条道路,每条道路连接这n个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这 m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数…

Azure Service Fabric Mesh:一个构建任务关键型微服务的平台

本文要点Azure Service Fabric Mesh(目前处于预览阶段)是一个完全托管的服务,它使你可以使用“无服务器”方法构建、部署和管理由运行在容器中的多语言服务组成的应用程序。Azure Service Fabric Mesh 通过使用 Envoy Proxy 构建的软件定义网…

P3265 [JLOI2015]装备购买

题目描述: 给N个整数向量,每个向量带权值,求权值和最小的线性基 题解: 按权值v从小->大排序,依次插入线性基。整数线性基的思想类似,只是此时“消去”不能直接xor完成,需要类似高斯消元一样…

Surging1.0发布在即,.NET开发者们,你们还在等什么?

开源,是近三十年来互联网经久不衰的话题。它不仅仅是一种技术分享的形态,更是一种开放,包容,互利共赢的互联网精神。 不到30年前,大神林纳德托瓦兹,在赫尔辛基大学实验室里,开发出了第一个版本的…

[SDOI2016]排列计数 (错排数概念 + 递推公式【附带证明】)

辛勤二更题目题解错排数概念错排数递推公式及其证明代码实现这种题做的时候: 做完后:正常这就是生活,我们要学会习惯 题目 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i …

失配树(border树)

4和6没有border关系 举例子: 当i 3时,j fa[i-1] fa[2] 0 s[j1] s[1] a s[3] 所以把i 3点的父亲设为j1 1 P5829 [模板]失配树

魔方俱乐部

爆肝感动三更题目思路90分代码(MLE)题解代码实现题目 fateice 来到了魔方俱乐部旅行。 魔方俱乐部有N个分部,每个分部均有且仅有一个虫洞,但是这虫洞只能通往一个分部。 每个分部有一个 orzFang 价值,第i个分部的 or…

模板:最大匹配

文章目录前言代码前言 匈牙利算法 可以解决的问题&#xff1a; &#xff08;原谅我的偷懒&#xff09; &#xff08;原谅我的水文&#xff09; 代码 #include<bits/stdc.h> using namespace std; #define ll long long const int N3e5100; const int mod1e97; int n,…

Stack Overflow 监控系统内部架构初探

Stack Exchange 架构主管 Nick Craver 在最近的一篇文章中介绍了他们的监控系统。他在文章中讨论了监控策略背后的理念和动机&#xff0c;并介绍了他们的工具集——主要是 Bosun、Grafana 和 Opserver。Stack Overflow 及其姐妹站点 Stack Exchange 运行在.NET 和 MS SQL Serve…

P5829 【模板】失配树

P5829 【模板】失配树 题目&#xff1a; 题解&#xff1a; 参考题解 我们先想一个问题&#xff1a;如何求出一个字符串的所有border&#xff1f; 如果一个字符串既是 S的前缀又是 S 的后缀&#xff0c;那么我们把 SS 自己平移一下就可以前后重合&#xff0c;然后我们就可以继…

[JLOI2015]战争调度

文章目录题目题解代码实现题目 脸哥最近来到了一个神奇的王国&#xff0c;王国里的公民每个公民有两个下属或者没有下属&#xff0c;这种关系刚好组成一个 n 层的完全二叉树。 公民 i 的下属是 2 * i 和 2 * i 1。最下层的公民即叶子节点的公民是平民&#xff0c; 平民没有下…

使用PerfView监测.NET程序性能(一):Event Trace for Windows

前言&#xff1a;在日常项目开发中&#xff0c;我们时不时会遇到程序占用了很高CPU的情况&#xff0c;可能是程序里某些未经优化的代码或者Bug&#xff0c;或者是程序运行压力太大。无论是什么原因&#xff0c;我们总希望能看到到底是哪个方法占用了如此高的CPU。微软为我们提供…

【用学校抄作业带你走进可持久化线段树(主席树)】可持久化线段树概念+全套模板+例题入门:[福利]可持久化线段树)

我似乎很少写这种算法博客可持久化线段树概念概念介绍&#xff08;类比帮助理解&#xff09;简单分析一下时间和空间复杂度&#xff08;内容池&#xff09;模板结构体变量建树模板单点修改模板单点查询模板区间修改模板&#xff08;pushup&#xff09;区间修改模板&#xff08;…

P3258 [JLOI2014]松鼠的新家

文章目录题意&#xff1a;题解&#xff1a;树上差分代码&#xff1a;树链剖分代码&#xff1a;P3258 [JLOI2014]松鼠的新家题意&#xff1a; n个点&#xff0c;n-1条边&#xff0c;给出每个点的拜访顺序&#xff0c;问每个点经过几次&#xff08;最后一次移动不算拜访&#xf…