2017-04-27 43 views
1

我想知道docker如何适合CI/CD。 我明白,在容器的帮助下,您可能会关注代码,而不是依赖关系/环境。但是一旦您签入代码,您将期望像TeamCity,Jenkins或Bamboo这样的工具负责集成构建,集成测试/单元测试和部署到目标服务器(在批准后),您将在其中运行相同的Docker容器映像构建的代码。然而,在上述所有内容中,Docker在CI/CD周期中并不存在,尽管它在服务器执行时发挥作用。那么,为什么我会看到文章将其列为DevOps的其中一项。 我可能是错的,因为我不是DevOps大师,请指教!DevOps vs Docker

回答

3

Docker只是DevOps Engineers,DevOps从业者或其他任何您想调用它们的工具。 Docker所做的就是将代码和代码依赖关系封装在一个单元(一个容器)中,该单元可以在Docker引擎安装的任何地方运行。为什么这很有用?由于多种原因;但是在CI/CD方面,它可以帮助工程师将代码配置从代码中分离出来,减少花在执行依赖管理等方面的时间,可以使用它来扩展(当然还有一些其他工具的帮助)。名单继续。

例如:如果我有一个代码存储库,那么在我的构建脚本中,我可以引入环境特定的依赖关系来创建一个在每个环境中功能行为相同的Container,因为我从同一个源存储库构建,但它可以包含一组环境的具体证书和配置文件等

又如:如果有多个构建服务器,你可以创建一批公用码头工人的容器,可以在您的CI中使用/ CD管道做在一个阶段中通过拉下一个容器来做某件事。现在,您的构建服务器的唯一依赖关系成为Docker Engine。您可以更改,添加,修改这些实用程序容器,而与另一个实用程序容器执行的任何其他操作无关。尽管如此,在您的CI/CD管道中使用Docker确实有很大的帮助。我认为理解Docker是什么以及Docker能做什么更重要的是“如何在CI/CD中使用Docker”指南。虽然有一些常见的模式,但这一切都归结为您正在尝试解决的问题,某些模式可能不适用于某个用例。

4

Docker简化了“配置为代码”的概念。我可以编写一个Dockerfile,它指定一个特定的基础映像,它包含我需要的所有框架以及签入到我的存储库中的自定义配置文件。然后,我可以使用Dockerfile构建该映像,将其推送到我的Docker注册表,然后告诉目标主机提取最新的映像,然后运行映像。我可以自动完成所有这些工作,使用目标主机上只安装了Linux的目标主机。

这是一个简单的场景,说明Docker如何为CI/CD做出贡献。

+0

很好的解释谢谢,重点! –

0

Docker对构建应用程序也很有用。如果您有多个具有不同依赖关系的应用程序,则可以通过在具有必要依赖关系的Docker容器中构建所有内容来避免CI计算机上存在大量依赖性和冲突。如果你需要在将来扩展你所需要的是运行你的CI工具的另一台机器(如jenkins slave),并安装docker。

当使用微服务时,这是非常重要的。一个应用程序可以依赖旧版本的框架,而另一个应用程序需要新版本。用容器这没问题。

0

Docker删除了我们都知道的来自地狱问题的矩阵,使得环境独立于其容器技术。开源项目Docker通过简化容器工作流程改变了游戏规则,这导致了在软件交付生命周期的各个阶段(从开发到生产)使用容器的兴奋。

它不只是关于容器,它涉及到构建Docker镜像,管理你的镜像和依赖于任何Docker注册表,部署到编排平台等等,它都在CI/CD过程之下。