为什么docker(基于容器的技术)很有用

时间:2014-07-14 21:42:04

标签: containers virtualization docker

最近我一直在研究docker及其为SaaS公司提供的实用性。我花了一些时间学习如何将应用程序容器化并简要了解docker和container是什么。我在理解这项技术的实用性方面遇到了一些问题。我观看了一些来自dockercon的视频,似乎每个人都在讨论docker如何简化部署,以及如何在开发环境中部署,以确保在生产环境中运行。但是,我有一些问题:

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

  2. 如果我们假设开发工作流程不会改变。开发人员将在本地开发并将代码推送到repo或其他东西。那么“容器化应用程序”在哪里适合工作流程?

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

1 个答案:

答案 0 :(得分:2)

  1. 您可以在容器外部编写代码,并以多种不同方式将其传输到容器中。一些例子包括:

    • 本地代码,并docker build使用ADDCOPY语句作为Dockerfile
    • 的一部分,在您docker build时包含来源
    • 本地编码并将您的代码推送到GitHub等源代码存储库,然后让构建过程将代码作为ADD
    • 的一部分提取到容器中
    • 在本地编码,并将本地源代码目录作为共享卷装载到容器中。

    前两个允许您在生产和开发中拥有完全相同的构建过程。最后一个示例不适合生产,但可以使用{{1}}语句快速转换为生产(即第一个示例)

  2. 在Docker工作流程中,开发人员可以创建源代码(在git,mercurial等存储库中存储和共享)和可立即运行的容器,后者通过存储库进行存储和共享例如https://registry.hub.docker.comlocal registry

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