什么是Docker?它是如何解决业务难题的?

  Docker是一个开发人员容纳和轻松发布软件的平台。它有助于消除配置环境以运行软件的开销,实质上是将环境与代码一块儿运送。前端

  咱们一般使用装运容器类比来解释。货运公司负责将集装箱从A运输到B,他们不关心您放入集装箱的货物,但他们确实关心您是否以正确的格式将货物交给他们。docker

  将您的开发人员视为将软件打包到容器的创造者。他们构建的内容可能会因特殊库、优化或配置而变得复杂。一旦他们准备好运送的软件,就该把它交给一家知道如何从A到B的货运公司。幸运的是,如今它采用标准化格式,DevOps能够轻松地将其转移到生产中。他们甚至能够自动化这个过程,以便未来更容易。后端

  在本文中,咱们将举例说明Docker的业务用例,概述如何构建Docker化的微服务,使用Amazon的弹性容器服务(ECS),并概述使用Docker能带来的的商业利益。浏览器

  Docker和微服务架构的用例安全

  假设您的Web应用程序有一个资源密集型的用户注册页面。在每个月月初新用户会蜂拥而至。为了处理负载,您的服务器基础结构正在几个大型负载平衡服务器上运行(以下所示)。不幸的是,这种处理规模一年中只有12天。这意味着您的公司将为大部分时间都没有使用的资源付费。服务器

  如今,假如一个关键功能在注册过程当中发生了变化:出于法律缘由,用户须要被置于二级报告系统中。目前,您的注册代码隐藏在应用程序的剩余部分中,将此修复程序移至生产意味着整个系统的彻底从新部署。开发人员和基础设施将在本周末加班工做,以执行这一更新。最糟糕的是,这仅仅是一个相对较小的变化!网络

  在Docker化的世界中,这是小case。注册过程能够与主应用程序分离,并使用滚动更新推送到生产环境。你能够星期一作,甚至不须要把网站关闭。无人不为之喝彩,由于这意味着软件能够快速安全地投入生产。架构

  为了达到这一点,开发人员能够经过构建REST服务来启动解耦注册过程。一旦Web前端和注册服务的代码分离,它们就能够进行Docker化。开发人员能够将全部代码、库和配置打包到DockerImages中并移交给DevOps。DockerSwarm,AmazonECS或RedHat的OpenShift等集群工具将使DevOps可以托管Docker容器。他们能够用这些系统在需求高时扩大规模,在需求低时缩小规模。以经济有效的方式利用资源又反过来解决了咱们的第一个问题。微服务

  使用Docker和微服务架构解决可扩展性和解耦代码工具

  让咱们用咱们的示例项目来讲明这个容器化的基础设施。此代码包含Web前端和注册后端。您可能会注意到这些被分红两个单独的代码仓库。不要紧,在面向服务的体系结构中,这些服务相互了解的越少越好。

  在下图中,咱们能够看到生活在AmazonECS群集内的Web和注册容器。用户注册请求将到达Web前端,而后能够向任何注册服务询问进行响应。

  让咱们开始克隆示例项目。

  确保安装了Docker和Gradle,以便咱们能够构建项目和图像。

  

  您能够运行如下命令来查看Docker引擎中的图像。

  

  请注意,咱们如今有两个图像加上它们构建的基本图像。只是为了好玩,让咱们启动网络应用程序并访问。获取DockerWeb映像并将其做为在本地虚拟机上运行的容器启动。

  

  咱们让托管机器访问8080端口上的容器。使用如下命令,咱们如今能够看到它正在运行。

  

  使用亚马逊的弹性容器服务

  要真正了解这些Docker图像的优点,咱们须要一个可扩展的基础架构来运行它们。出于本演示的目的,AmazonECS会作得很好。要将图像输出到Amazon云,您须要安装AWS命令行界面。

  亚马逊提供了一个很棒的向导来帮助简化这个过程。在其中,您将执行如下操做

  建立一个Docker存储库来托管您的图像

  将图像上传到云端(见下文)

  建立运行映像的EC2实例集群

  将您的图像分组到服务Service中

  要将Docker图像推送到云端,您须要先登陆。

  

  上面的命令生成一个“dockerlogin”,它将Docker主机指向远程仓库。这将授予对每一个AWS帐户附带的默认AWS注册表的访问权限。

  

  请注意,上述注册表能够包含许多存储库。存储库包含图像的版本。对于此项目,您将须要两个存储库。一个用于咱们的Web图像,一个用于注册图像。

  为了将图像发送到远程仓库,须要对其进行适当标记。像这样使用您的AWS仓库的URL。

  

  如今让咱们将它们推送到AWS。

  使用Docker容器扩展ECS

  在上一节中,您使用向导建立了一个EC2实例群集。咱们建立了两个代码仓库来保存咱们的图像并将其上传到那里。咱们来看一下。

  

  您还能够看到个人群集在其已完成状态下有3台服务器,其上运行4个Docker镜像(参见上图)。

  

  上面还列出了咱们从群集配置的服务。服务容许您对Docker容器进行分组并指定选项,例如您想要多少个选项,以及如何平衡它们之间的流量。

  

  若是您正确配置了LoadBalancer,则能够在浏览器中访问它。请求将分发到群集中的活动容器数。

  这是咱们创建的注册服务的手动请求。回想一下,该服务在端口8081上运行,以避免与端口8080上的注册服务冲突。LoadBalancer负责将全部这些隐藏起来。咱们能够经过端口80从注册服务得到结果。

  

  Docker的将来

  这个快速概述仅涉及Docker和微服务架构如何用于为您的团队和产品进行重大改进。如下是采用此架构时能够看到的一些明显的好处。

  1.下降成本

  2.加快发展

  3.更快,更一致的部署

  4.松散耦合的代码和团队

  5.更易于维护和扩展

  6.更可靠的基础设施

  若是您但愿在更大的环境中利用Docker,那么咱们建议您考虑使用SpringNetflix和OpenShift等解决方案。这些解决方案适用于更大的Docker生态系统,可使部署和开发更加轻松。      本文转载自数据星河平台:www.bdgstore.com.cn

相关文章
相关标签/搜索