Docker与DevOps错综复杂关系

云计算已经为可编程基础设施铺平了道路,它把最大程度的自动化带进软件开发周期中。在应用的整个生命周期中,我们被赋予随时管理和配置资源、部署应用、监控操作的能力,最终产生了开发者和运维人员相互协作的DevOps文化。尽管管理和配置都留给了Chef,Puppet、Ansible等工具,但Jenkins才是DevOps的基石。

docker

在发布流程中,软件构建、打包和部署起着至关重要的作用。企业开发人员常常依靠Make、MS Build、Ant、Maven、Gradle等工具来编译和链接源代码。多语言编程和分布式开发的兴起增加了构建管理的复杂度。这正是Jenkins的用武之地。

通过自动化的构建过程中, Jenkins能够有效地编排大型团队所需的复杂工作流程。与代码控制系统相结合,Jenkins可以针对不同的环境调用多个构建进程。根据平台此输出将产生一系列EXEs,DLLs,或JAR文件。

不依赖Ant和Maven这样的构建工具,Jenkins也可以进行自由的构建。它可以调用简单的shell scripts来执行预编译和构建后的任务。此选项使Node.js,Python,Ruby和其他环境利用自动化构建。

在过去的几年中,Docker 迅速成为开发和测试环境的首选。DevOps团队发现它能有效的配置基于Docker的开发/测试环境。它也彻底改变了软件的打包和部署。而不是部署最终一组工件(如EXE文件和JAR文件)到目标环境。

OPS团队现在正把整个应用程序打包成Docker镜像。这个镜像在发布到中央registry之前共享相同的版本。不同的环境(开发、测试、模拟和生产)使用这些镜像进行部署。因此,Docker已经成为名副其实的二进制打包格式。

事实证明,Jenkins 和 Docker 这对致命组合对于DevOps团队而言是非常宝贵的。利用与Git等源代码管理系统的整合,每次代码都会触发一次构建。构建成功以后,生产的docker镜像可以立即对所有环境可见。团队可以部署私有Docker registry来发布以及维护其内部的Docker镜像。

docker

来源:CloudBees

Docker公司意识到它可以在DevOps的生态系统中发挥重要作用。根据其“Build, Ship, and Run”的愿景,公司正在向这个方向投资,以便更好地整合Docker到DevOps中。Docker公司推出的相关产品有:Docker Trusted Registry,Universal Control Plane,和Docker Cloud(tutum)。

投资自动化构建的不仅仅有Docker公司。在Jenkins 背后的社区也在不断发展,目前已经开发出多种多样的插件来用 Jenkins 解决集成。这些工具很容易让DevOps团队实施基于Docker的构建。

很多初创公司都看到了基于Docker的构建自动化的市场潜力,过去几年出现了很多家创业公司专注于这个领域。CloudBees是其中一个,它是一个拥抱Jenkins的纯粹的PaaS玩家,为企业部署Jenkins提供专业服务和商业支持。诞生于西雅图的Shippable,使用docker将软件自动化构建民主化。

甚至像Atlassian这样的SCM公司都在自家的产品中集成构建功能。GitHub的竞争对手Bitbucket 发布了一个称为pipelines的新特性。Codeship是一家专注基于Docker持续集成的创业公司。另一家位于西雅图的公司CloudMunch ,为了支撑CI / CD,也开始拥抱Docker。

不管你是只有少数开发和测试的初创公司,还是正在考虑 DevOps的企业,都不能忽视Docker。是时候将Docker纳入你的DevOps流程中了。

K8S中文社区微信公众号
分享到:更多 ()