2014-07-14 52 views
0

最近我一直在寻找码头和它可以提供给SaaS公司的实用性。我花了一些时间了解如何容器化应用程序并简要了解Docker和容器是什么。我对理解这项技术的有用性有些问题。我观看了一些来自dockercon的视频,似乎每个人都在谈论docker如何简化部署,并确保您在开发环境中部署的方式保证在生产环境中运行。不过,我有一些问题:为什么码头(基于容器的技术)是有用的

  1. 部署直接从开发环境容器生产意味着开发人员应制定内部的容器,是将生产运行相同的容器。这实际上是不可能的,因为开发者喜欢用IDE来开发他们的MAC。如果开发人员被告知ssh进入容器并在其内部开发他们的代码,他们将会反抗。那么,目前使用docker的公司如何工作呢?

  2. 如果我们假设开发工作流程不会改变。开发人员将在本地进行开发并将其代码推入回购或其他任务。那么“容器化应用程序”在哪里适合工作流?

  3. 另外,如果开发人员不在容器内开发,那么“你开发的是你部署的并且保证工作”的假设被违反。如果是这种情况,那么我只能看到docker提供的唯一好处是隔离,这与虚拟化提供的功能相同,当然它的开销较低。所以我的问题是,docker对虚拟化的唯一优势是低开销吗?还是我没有看到的其他东西?

回答

2
  1. 您可以编写代码容器的外面,并将其转移到容器中,许多不同的方式。一些例子包括:

    • 代码在本地和包括源,当你docker build通过局部使用ADDCOPY语句作为Dockerfile
    • 代码的一部分,你的代码推到像GitHub的源代码库,然后有构建过程将代码拉入容器中,作为docker build的一部分
    • 本地代码并将本地源代码目录安装为与容器共享的卷。

    前两个允许您在生产和开发中具有完全相同的构建过程。最后一个例子不适合生产,但可以通过ADD声明(例如第一个例子)快速转换为生产

  2. 在Docker工作流程中,开发人员可以同时创建源代码(将其存储并共享像git,mercurial等存储库)以及一个可立即运行的容器,该容器通过类似https://registry.hub.docker.comlocal registry的存储库进行存储和共享。

  3. 您开发和测试的集装箱运行代码正是可以投入生产的产品。这是一个优点。此外,您还可以获得隔离,有趣的容器到容器网络以及与越来越多的用于创建,维护和部署容器的devops工具的工具集成。