DevOps-工程师成长日记系列四打包
原文地址:https://medium.com/@devfire/h...原文作者:Igor Kantor 翻译君:CODING 戴维奥普斯前情提要在这个系列的第一篇文章中,我们详细地介绍了 DevOps 相关的文化和基础技能;在第二篇文章中,我们进入 DevOps 中各个模块并大致指明了如何为代码部署搭建基础;在第三篇文章中,我们讨论了如何合理的整理已经部署的代码;本篇文章中,我们将讨论如何打包代码以便于后续部署和执行。 现在我们已经来到了 DevOps 周期中关于代码打包的环节。 注意:你可以看到每个部件如何构建在前一部分上,并为后续部分奠定基础,这一点很重要。 因为无论你是在与现在还是将来的雇主交谈,你都必须能够清楚地表达出 DevOps 是什么以及它为何如此重要。而这就需要你通过讲述一个连贯的故事来达成——这个故事讲述了如何最好地、快速有效地将代码从开发人员的笔记本电脑发送到能赚钱的生产环境部署。 这也就是为什么我们不仅仅是在学习一些比较流行的 DevOps 工具。我们是在学习一整套被当前商业环境所需求的 DevOps 的理念和技术,以及在他们背后支持着的技术工具。 然后请记住,其实每个部分都需要将近一个多月的学习,一整套内容学习下来应该需要将近六个月的时间。 在虚拟化出现之前还记得那些物理服务器么?就是必须等待几周才能发货,数据中心收到,放在机架上,再花时间搞网络、安装操作系统和修补的那些? 没错,他们先来的。 举个例子,拥有居住地的唯一方法是建造一座全新的房子。需要一个住的地方?想想盖个房子需要多久吧!虽然这个主意不错,是因为至少每个人都有房子了,而不是因为建房子需要很长时间。在这个类比中,物理服务器就像一个房子。 不久人们就对这些事情花了太长时间而感到恼火,于是一些牛人就提出了虚拟化的想法:在一台物理机器上运行一堆伪装的“假机器”,让每台假机器都像一台真机。这样如果你想要一栋房子,你可以建立自己的房子并等待六周;或者你可以直接住到公寓楼里与其他租户分享资源。这个想法也许不是完美的但已经足够,最重要的是开箱即用。 这种情况持续了一段时间,相关公司(像 VMware)也因此收割了很多利益。 直到又有人认为将一堆虚拟机填充到物理机器中还不够好:我们需要将更多进程更紧凑地打包到更少的资源中。 就像你觉得,房子太贵了,公寓也太贵了。如果只想暂时租一个房间怎么办?还想要那种能随时搬进搬出的。 于是 Docker 出现了。 Docker 的诞生Docker 是一个新的东西,但其实 Docker 的理念很早就出现了。在 2000 年的时候,有一个叫 FreeBSD 的系统就提出过相似的概念。当时和现在的想法是隔离同一操作系统中的各个进程,即所谓的“操作系统级虚拟化”。 这在实践中意味着什么? 实际上,这意味着 Docker 的受欢迎程度急剧提升巧妙地映射了微服务的兴起——一种将软件分解为许多单独组件的软件工程方法。 而这些组件需要一个家。单独部署独立的 Java 应用程序或二进制可执行文件是十分痛苦的:管理 Java 应用程序的方式与管理 C++ 应用程序的方式不同,这与你管理 Golang 应用程序的方式不同。然而 Docker 能提供单一管理界面,允许软件工程师以一致的方式打包,部署和运行各种应用程序。 对于那个时候来说,这是具有跨时代意义的。 Docker 的优势进程隔离 Docker 允许每个服务都具有完全的进程隔离。服务 A 存在于自己的小容器中,具有所有依赖关系;服务 B 存在于其容器中,具有所有依赖性。而且两者完全不会冲突。 ...