将Docker与AWS Elastic Beanstalk一起使用的优势是什么?

时间:2017-09-05 02:31:26

标签: 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
  •   

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

2 个答案:

答案 0 :(得分:5)

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

来自the official documentation

  

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

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

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

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

答案 1 :(得分:1)

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

然而,在创建弹性beanstalk服务器时正在执行ebextensions。另外.ebextensions不像docker镜像那样容易实现。

通过在弹性beanstalk上使用docker,您可以在不需要任何额外配置的情况下部署映像设置,并且当您需要不可变的体系结构时,docker非常棒。