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

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

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

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

 

Docker和持续集成(CI)

 什么是持续集成?

我们先得了解持续集成的相关概念,才能更好地指导开发和使用Docker来改进我们的工作流。和其他教程不一样,笔者更喜欢将必要的知识点围绕理论、流程(工作流程)、方法、实践来进行讲解,而不是单纯的为讲解知识点而进行讲解。也就是说,笔者希望为大家打通任督二脉,能够将理论、知识、思想和指导应用到工作的实际场景和实践之中,而不是拿着字典写文章,抱着宝典写代码。至于很多具体的语法、技术细节,除了常用的知识点,笔者更希望大家阅读官方文档——毕竟看官网比看书靠谱多了,官网会一直更新和改进,而书和教程自出版或发布之后,基本上就“死“了。

好了,我们回到正题。持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

 

徒弟一脸崇拜道:“师父,为什么我做出来的飞剑,一念咒语不是碎了就是爆了呢?”。

师父摸了摸胡子道:“徒儿莫急,冰冻三尺非一日之寒!为师我刻了3年的阵法,练习了3年的咒语,然后又花了3年一起练习,才让第一把飞剑飞上了太空。我看你天资聪慧,顶多20年就够了”。

2年后,徒弟边刻阵法边念咒,突然飞剑的剑身嗖的一下不见了,只余剑柄。

师父:“徒儿,你的飞剑怎么飞了一截出去了!”

徒弟握着剑柄行礼道:“师父勿怪,这段时间我对飞剑的制作过程进行了改良,一边刻阵法一边念咒,现在我对阵法和咒语的掌控都达到了70%,所以只有前半截飞出去了!“

 

注意:集成软件的过程不是新问题,如果项目开发的规模比较小,比如一个人的项目,如果它对外部系统的依赖很小,那么软件集成不是问题,但是随着软件项目复杂度的增加(即使增加一个人),就会对集成和确保软件组件能够在一起工作提出了更多的要求-要早集成,常集成。早集成,频繁的集成帮助项目在早期发现项目风险和质量问题,如果到后期才发现这些问题,解决问题代价很大,很有可能导致项目延期或者项目失败。

 

核心价值

 

要素

1.统一的代码库

2.自动构建

3.自动测试

4.每个人每天都要向代码库主干提交代码

5.每次代码递交后都会在持续集成服务器上触发一次构建

6.保证快速构建

7.模拟生产环境的自动测试

8.每个人都可以很容易的获取最新可执行的应用程序

9.每个人都清楚正在发生的状况

10.自动化的部署

 

原则

1. 所有的开发人员需要在本地机器上做本地构建,然后再提交的版本控制库中,从而确保他们的变更不会导致持续集成失败。

2. 开发人员每天至少向版本控制库中提交一次代码。

3. 开发人员每天至少需要从版本控制库中更新一次代码到本地机器。

4. 需要有专门的集成服务器来执行集成构建,每天要执行多次构建。

5. 每次构建都要100%通过。

6. 每次构建都可以生成可发布的产品。

7. 修复失败的构建是优先级最高的事情。

8. 测试是未来,未来是测试

 

持续集成我们就先说到这里,建议大家也可以了解下敏捷开发,毕竟持续集成是敏捷开发的基石,但是敏捷开发是一个大命题,这里我们顺带提一下,然后我们还是先继续本篇教程:

师父:“徒儿,你真的在短短3年就让飞剑飞起来了?”。

徒弟:“弟子愚钝,在刻剑的过程中倍觉无聊,又不喜欢哼歌,于是索性边练咒边刻剑。后面徒儿发现,如果刻错了或者念错了,飞剑就会提前直接爆炸,虽然每次炸的内裤都没了,但是能够尽早发现错误。所以徒弟才能一日千里”。

师父摸了摸胡须道:“然来如此!不过,这就是你大庭广众之下裸奔的借口!!?”

 

Docker和持续集成(CI)

 

相比其他技术,Docker在持续集成(CI)这块有着先天的优势。在通常的情况下,我们要实现持续集成往往会遇到以下问题:

复杂的依赖关系

不同的项目环境,不同的语言,不同的程序包依赖,甚至是操作系统的依赖等等,都会影响到我们持续集成的自动化脚本的执行。而且依赖包之间的兼容性,版本的兼容性,间接依赖或者多重依赖等问题等等,对于开发和运维来说,都是一个噩梦。就如以下对话:

徒弟:“师父,我按照您教的方式念咒,为什么飞剑飞起来了之后就收不回来了?”。

师父直接一巴掌,说:“兔崽子,上次就和你说了,咒语现在最低的兼容级别是——普通话二级乙等!谁教你说长沙话的!”

 

不一致的环境

在通常的环境中,我们需要准备好开发、测试和生产环境,往往开发环境随便开发人员折腾,有时候操作系统或者依赖软件的版本的区别、组件的不同、配置不一样,都足够让开发环境正常运行的程序在测试环境上跑不起来,造成测试人员和开发人员的故意伤害事件,导致“行凶人员”后悔终生,感悟到“冲动就是魔鬼”的箴言。我们还是以对话来阐述这个问题:

徒弟拿出普通话二级乙等证书道:“师父,我苦学普通话,终于达到普通话二级乙等。然后按照您教的方式念咒了,之后为什么飞剑飞起来了之后还是没法收回来?”。

师父又是一巴掌,说:“兔崽子,你没看到下雨了么?”

徒弟弱弱的问:“这个和下雨有关系么?是不是雨天法术受雨滴干扰,咒语的效果受到影响呢?”

师父指着外面道:“瞎了?你丫的不赶紧把被子收回来烘干,你的飞剑就甭想要了!”

 

应用架构的复杂性和配置的多样性

现在的系统架构越来越复杂,甚至由多种开发语言组成,而且包含前后端等多方面内容。这些可能会导致其部署方式的不同以及配置的复杂性。并且一个系统维护到后面,往往有很多历史遗留问题,比如那各种配置文件和配置方式,各种补丁,各种脚本等等。这些因素会导致自动化流程会非常麻烦和艰难。我们继续来一段对话:

 

徒弟:“师父,被子收好了,但是飞剑越飞越远了,是不是可以教我收回我的飞剑啦!”。

师父张开一只眼:“小崽子,普通话念完后,用长沙话再念一遍收剑咒!前几天,为师对收剑咒又进行了改造。”

徒弟用长沙话念完,飞剑还是再天空中乱窜,并没有降下来的意思。徒弟赶紧问道:“师父,为啥还是不行呢?”

师父弹了弹手指,远处一根若隐若现的细线展现出来,师父指着那根线说:“看到那边那根线没?还不赶紧去追!”

 

相比这些问题,Docker实现持续集成(CI)就方便多了。

首先,Docker可以让我们非常容易和方便地以“容器化”的方式去部署应用。它就像集装箱一样,打包了所有依赖,再在其他服务器上部署很容易,不至于换服务器后发现各种配置文件散落一地,这样就解决了编译时依赖和运行时依赖的问题。

其次,Docker的隔离性使得应用在运行时就像处于沙箱中,每个应用都认为自己是在系统中唯一运行的程序,这样就可以很方便地在一个系统中部署多种不同环境来解决依赖复杂度的问题。

正因为Docker是以应用为中心,镜像中打包了应用及应用所需的环境,一次构建,处处运行。这种特性完美解决了传统模式下应用迁移后面临的环境不一致问题。

因此使用Docker实现持续集成,我们可以使用一些简单的免费的工具即可实现,也可以非常方便的自己搭建集成环境或者编写脚本实现。比如Azure DevOps、Tencent Hub、Jenkins和TeamCity,接下来我们会逐步进行介绍。

持续集成工作流程

一般情况下,持续集成的流程如下所示:

下面是一个参考流程:

代码版本管理,我们推荐使用Git。关于git版本库的使用,我这里就不啰嗦了,如果有朋友感兴趣,我也可以分享一些内容。

后续,我们将会分享使用相关工具来实施我们的CI流程。

 

往期内容链接

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

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

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

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

Docker最全教程——从理论到实战(五)
Docker最全教程——从理论到实战(六)
我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1uzymsc0hstza
posted on 2019-01-14 11:44 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/10266008.html

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

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

相关文章

设置Windows 10时如何创建本地帐户

Windows 10 tries its hardest to make you use a Microsoft account. The option was already hidden, but now it’s not even offered on Windows 10 Home while you’re connected to the internet. Here’s how to create a local account anyway. Windows 10尽最大努力使…

在PowerPoint 2010中将鼠标用作激光笔

Have you ever wished you had a laser pointer to focus attention on a key point in a PowerPoint slideshow? Today, we’ll take a look at how can use use your mouse as a laser pointer in PowerPoint 2010. 您是否曾经希望激光指示器能将注意力集中在PowerPoint幻灯…

this表示当前对象简单实例

直接上代码 class Message { private Channel channel ; // 保存消息发送通道 private String title ; // 消息标题 private String content ; // 消息内容 // 4、调用此构造实例化,此时的channel 主类ch public Message(Channel channel,String title,String cont…

twitter推文不收录_如何使用Twitter书签保存推文供以后使用

twitter推文不收录Khamosh PathakKhamosh PathakTwitter has a new Bookmarks feature that lets you privately save tweets for later. If you’ve been using the Like feature as a workaround for saving tweets, here’s why you should start bookmarking. Twitter具有一…

if的作用域问题 *输出1~6的随机数*

1 //测试if语句2 public class TestIf {3 public static void main(String[] args){4 double d Math.random();//0~1之间的小数5 int e (int)(d*5); //[0,4]6 //int f 1(int)(d*6); //[1,6] 掷色子7 System.out.println(e);8 …

为您的Blogger博客设计一个美丽的新主题

Would you like to give your Blogger blog a fresh coat of paint with a new theme? Here’s how you can use the new Template Designer to make your Blogger site stand out from the crowd and look great. 您想给Blogger博客一个新的主题吗? 您可以通过以…

Lab 6-4

In this lab, we’ll analyze the malware found in the file Lab06-04.exe. Questions and Short Answers What is the difference between the calls made from the main method in Labs 6-3 and 6-4? A: The function at 0x401000 is the check Internet connection method…

步入三十岁前的总结:看似经历很多得到很多,但,实际却一无所得

本文算是一篇审视自己的文章吧,感觉跟我类似经历的人应该很多,认同感应该也大一些。我是12年网络专业很普通的一所大专院校毕业,到现在为止工作已经超过五年。这五年里,做过运维工程师,也在小车床工作间里做了一下技工…

vue---day03

1. Vue的生命周期 - 创建和销毁的时候可以做一些我们自己的事情 - beforeCreated - created - beforeMount - mounted - beforeUpdate - updated - activated - deactivated - beforeDestroy - destroyed 1.1 知识点回顾 1.1.1 be…

U Sparkle 开发者计划招募中!

向我们投稿吧 在此之前,我们有收到过几篇民间高手的投稿,如: USequencer 初识(作者:焱燚(七火)) Unity游戏界面解决方案: PSD For UGUI(作者:张俊钦) UGUI 降低填充率技巧…

如何添加引文标_如何在Google文档中查找和添加引文

如何添加引文标When writing papers, you need to generate a detailed and accurate list of all the sources you’ve cited in your paper. With Google Docs, you can easily find and then add citations to all of your research papers. 撰写论文时,您需要生…

Linux Centos下SQL Server 2017安装和配置

Linux Centos下SQL Server 2017安装和配置 原文:Linux Centos下SQL Server 2017安装和配置我们知道在Linux下安装服务有很多方式,最为简单的也就是yum安装,但是很多服务通过yum是无法安装的,如果想使用yum安装,需要指定yum安装仓库…

如何在Linux上使用端口敲门(以及为什么不应该这样做)

Photographee.eu/ShutterstockPhotographee.eu/ShutterstockPort knocking is a way to secure a server by closing firewall ports—even those you know will be used. Those ports are opened on demand if—and only if—the connection request provides the secret knoc…

小到年货大到产业,刘村长的扶贫模式有点厉害!

河北省阜平县平石头村的村民,今年春节再也不用头疼买什么年货,去哪买年货的问题了,因为他们的“村长”刘强东,给每户人家都送来了年货大礼包!大礼包里不仅有牛奶、果汁、毛衣、长裤、波司登羽绒服、枕头、毛巾、炊大皇…

克隆ubuntu硬盘_使用Ubuntu Live CD克隆硬盘

克隆ubuntu硬盘Whether you’re setting up multiple computers or doing a full backup, cloning hard drives is a common maintenance task. Don’t bother burning a new boot CD or paying for new software – you can do it easily with your Ubuntu Live CD. 无论是设置…

从Boxee的Amie Street访问音乐

One of our favorite sites for discovering new music is Amie Street. Today we take a look at the Amie Street app for Boxee that allows you to access your favorite tunes from the Boxee interface. 我们最喜欢的发现新音乐的网站之一是Amie Street。 今天&#xff0…

如何在Word,Excel和PowerPoint 2010中裁剪图片

When you add pictures to your Office documents you might need to crop them to remove unwanted areas, or isolate a specific part. Today we’ll take a look at how to crop images in Office 2010. 将图片添加到Office文档时,可能需要裁剪它们以删除不需要…

在Windows 7 Media Center中创建音乐播放列表

One of the new features in Windows 7 Media Center is the ability to easily create music playlists without using Media Player. Today we’ll take a closer look at how to create them directly in Media Center. Windows 7 Media Center的新功能之一是无需使用Media …

SQL Server2008导入导出数据库

一、导出数据库 1.新建一个.bak的文本 右击数据库--》Tasks--》BackUp--》Remove原来的数据库--》Add后选择之前建立的.bak档 二、导入数据库 1.右击数据库--》Tasks--》Restore--》Database--》From device--》勾选数据库之后--》点击左上角Options--》点击 --》OK覆盖 转载于…

如何使YouTube视频连续循环播放

Should you need a YouTube video on a continuous loop, a few methods can help you keep repeating a video without having to start it over manually. Here’s how to do it. 如果您需要连续循环播放YouTube视频,可以采用以下几种方法来继续播放视频&#xff…