【问题标题】:What's the advantages of using Docker with AWS Elastic Beanstalk?将 Docker 与 AWS Elastic Beanstalk 结合使用有哪些优势?
【发布时间】:2018-02-13 05:33:12
【问题描述】:

我在 AWS Elastic Beanstalk 上部署了几个网站,然后听说了 Docker,所以我想我这次或许可以在小型企业电子商务网站(Lumen + Angularjs)上尝试一下。我在网上搜索了很多,但由于没有使用 Docker 的经验,仍然很难 深入了解在 AWS 上使用 Docker 的优势。我只能找到一些这样的描述:

优点

  • 独立管理依赖项和服务器硬件
  • 开发环境(内部)与生产环境相同
  • 依赖管理意味着并非每个人都需要深入了解您的技术堆栈的每个部分
  • 使用 AWS 开发工具包或第三方工具轻松安排自定义任务和服务
  • 通过 ECS 充分利用可用资源,将任务分配给具有足够空闲资源的 EC2 在任务需要更多资源时使用自动缩放

缺点

  • 构建生成需要上传的大文件
  • Docker NAT 会增加网络延迟(使用 docker run –net=host,有关更多 docker 性能信息,请参见此处)
  • 当提到 docker 这个词时,一些开发人员会很适应
  • 需要修复一些应用程序才能在 Docker 上运行

谁能给我一些简单的例子或解释?

【问题讨论】:

    标签: amazon-web-services docker


    【解决方案1】:

    我认为,与在 Elastic Beanstalk 支持的特定运行时环境之一上运行应用程序相比,Docker on Elastic Beanstalk 的主要优势在于它为您提供的灵活性。

    来自the official documentation

    Elastic Beanstalk 支持从 码头集装箱。使用 Docker 容器,您可以定义自己的 运行环境。你可以选择自己的平台,编程 语言和任何应用程序依赖项(例如包管理器 或工具),其他平台不支持。 Docker 容器 是独立的,包括所有的配置信息和 运行您的网络应用程序所需的软件。

    例如,我看到很多人询问如何在 Elastic Beanstalk 上部署使用非 Tomcat 的 Java 应用程序。在他们添加 Docker 支持之前,您无法做到这一点。

    如果您使用的是官方支持的 Elastic Beanstalk 运行时之一,那么我很难推荐使用 Docker。它会在某种程度上将您的应用程序与 AWS 细节分开,理论上允许您在 AWS 之外更轻松地运行您的应用程序。如果您想不惜一切代价避免供应商锁定,或者只想了解最新技术,那么 Docker 是一个不错的选择。否则,如果您的应用程序已经在 Elastic Beanstalk 上运行,则没有太多理由将其转换为 Docker。

    编辑:请注意,正如您的问题标题所询问的那样,我的回复与专门将 Docker 与 Elastic Beanstalk 一起使用有关。我在您的问题中看到您还提到了 ECS 服务和 AWS 上更一般的 Docker 使用。这是一个更大的讨论,在某些事情上使用 Docker 而不是普通的 EC2 实例肯定有一些优势。


    2019 年 5 月 10 日编辑:AWS 现在似乎正在推动人们使用 Docker,这样他们就不必维护官方运行时的更新。例如,Elastic Beanstalk 的最新 Java 运行时是 Java 8。因此,如果您想在 Elastic Beanstalk 上运行现代版本的 Java,则必须使用 Docker。

    【讨论】:

    • 谢谢,伙计。虽然说的不是很详细,但是直接解决了我的疑惑。
    • “它会在某种程度上将您的应用程序与 AWS 细节分开,理论上允许您在 AWS 之外更轻松地运行您的应用程序”,您的意思是如果我想在 Windows 机器上测试我的 Web 应用程序, mac os x,ubuntu 实例,然后也可以使用 docker 将此应用程序部署到 EBS 将是一个不错的选择吗?
    • @vi_ral 是的
    【解决方案2】:

    考虑到弹性豆茎,有一定数量的环境。为了添加额外的配置并对这些环境进行自定义,您必须使用 .ebextensions

    但是,在创建弹性 beanstalk 服务器时正在执行 ebextensions。 .ebextensions 也不像 docker 镜像那么容易实现。

    通过在弹性 beanstalk 上使用 docker,您无需任何额外配置即可部署映像设置,当您需要不可变架构时,docker 非常棒。

    【讨论】:

    • 是的,这也是对这个开放式问题的一个很好的回应/理由。由于增加了对底层环境的控制,我们正在从 Elastic Beanstalk 节点切换到 Elastic Beanstalk Docker(运行节点环境)。我希望将一个整合的日志文件流式传输到 CloudWatch,这将使我们能够消除我们的日志记录提供程序并节省一些美元。
    • 我在弹性 beantalk 上有一个生产 Django 应用程序,我可以告诉你正确的 .ebextensions 是一个绝对令人头疼的问题!在 EB 上调试并不容易(至少使用 Django)。希望我早点发现 Docker。
    猜你喜欢
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 2020-08-18
    相关资源
    最近更新 更多