将Docker与AWS Elastic Beanstalk一起使用有什么好处?

yif*_*212 5 amazon-web-services docker

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

优点

  • 依赖关系和服务器硬件的分离管理
  • 开发环境与生产环境完全相同(内部)
  • 依赖管理意味着并非每个人都需要对技术堆栈的每个部分都有深入的了解
  • 使用AWS SDK或第三方工具轻松进行自定义任务和服务计划
  • 充分利用可用资源,ECS通过足够的免费资源为EC2分配任务当任务需要更多资源时使用自动扩展

缺点

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

有人可以给我一些简单的例子或解释吗?

Mar*_*k B 6

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

官方文档:

Elastic Beanstalk支持从Docker容器部署Web应用程序.使用Docker容器,您可以定义自己的运行时环境.您可以选择自己的平台,编程语言以及其他平台不支持的任何应用程序依赖项(例如程序包管理器或工具).Docker容器是自包含的,包含Web应用程序运行所需的所有配置信息和软件.

例如,我见过很多人问如何在Elastic Beanstalk上部署使用Tomcat以外的东西的Java应用程序.在添加Docker支持之前,你无法做到这一点.

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

编辑:请注意,我的回复与使用特定于Elastic Beanstalk的Docker有关,正如您的问题标题所示.我在你的问题中看到你也提到了ECS服务以及AWS上Docker的更普遍用法.这是一个更大的讨论,对于某些事情,使用Docker而不是普通EC2实例肯定有一些优势.