利用多个Dockerfiles用于复杂的应用程序配置

日期: 2020-01-29 作者:Paul Ferrill翻译:邹铮 来源:TechTarget中国 英文

大多数生产环境中基于Web的应用程序都使用多个容器,这使你可以增加容量来处理由于高流量而增加的工作量。使用多个Dockerfile可以帮助你决定如何对应用程序进行分区,以实现功能聚合,但是在决策过程中必须首先问自己几个问题。

你可能使用多个Dockerfile在负载均衡器后面启用更多前端工作节点,以满足用户需求。但是你必须考虑很多因素,例如哪些应用程序可以从Dockerfile中受益、每个应用程序需要多少个Dockerfile以及你是否具有流程来跟踪Dockerfile。

使用Dockerfile配置应用程序的注意事项

构建和管理分布式应用程序可能是复杂的过程,但是通过Dockerfiles和GitHub等工具,应用程序配置可以变得很简单。在使用Dockerfile之前,请询问自己以下问题,以确保你的项目成功。

哪些类型的应用程序可从多个Dockerfile中受益?

任何具有面向用户的前端、逻辑或处理块以及某种类型的存储后端的应用程序都将从多个Dockerfile中受益。

在GitHub提供的Docker Voting App就是这种架构的一个示例。该应用程序使用Python、Node.js、Redis、PostgreSQL和.NET worker应用程序。如果你决定在本地计算机上测试此应用程序,则必须从Docker设置应用程序启用驱动器共享。

此应用程序中的每个节点都带有自定义配置Dockerfile。在某些情况下,你会有部署选择,可处理特定任务,例如针对前端Web应用程序的Python或ASP.NET Core。你总共有五个不同的功能节点来部署该示例应用程序,并且每个节点都可以使用Dockerfile。

你如何确定哪些服务需要它们自己的Dockerfile

在Docker Voting App示例中,你有两个前端应用程序,它们可以是一个节点、一个缓存和一个数据库节点以及一个工作节点。应用程序划分为功能区域,可以更轻松地为每个节点提供不同的Dockerfile选项。

每个应用程序应有多少个Dockerfile

每个不同的服务或功能都应有一个Dockerfile。例如,在Docker Voting App中,五个功能节点都会有各自的Dockerfile。

每个服务具有多个Dockerfile,用于不同部署方法;工作节点有两个Dockerfile,分别是针对ASP.Net版本的特定说明,以及针对Java部署的说明。两者都包含少量针对该特定服务的指令。

如何通过多个Dockerfile容器化应用程序?

Docker Compose是使用多个Dockerfile构建应用程序的最常见方法。这需要YAML文件来基于一系列命令创建容器。Docker文档站点列出了用于Docker Voting App的Compose文件。每个功能服务都有单独的部分,其中包含构建应用程序所需的一切。dockerfile关键字让你可以在docker-compose.yml文件中指定与dockerfile不同的文件名。

如何避免过多的资源消耗?

在容器架构中,资源限制或配额是限制资源使用的最主要方法。通过Docker,你可以使用命令行选项(例如–memory-swap和–kernel-memory)强制执行硬内存限制。你也可以使用类似的方式限制CPU使用率。

Kubernetes还来支持基于命名空间的资源消耗限制—通过使用带有一组定义和关键字限制的YAML文件。

Kubernetes中的命名空间类似于编程语言功能,你可以在其中使用适当的管理和安全控制来配置或实例化单个资源。它也有点类似于Python中的虚拟工作区。

整理和跟踪多个Dockerfile的最佳方法是什么?

构建跨越多个容器的分布式应用程序主要采用DevOps方法。DevOps非常适合使用某种类型的源代码控件(例如Git)来管理每个发行版的版本控制和相关性。

你应确保应用程序配置尽可能简单,这可有助于你的项目取得成功。好的起点是使用一个示例应用程序用于初始开发和部署测试。然后,你可以开始添加代码以逐步构建你的第一个版本。在这个过程中,你将学到很多有关代码以及如何启动和运行代码的知识。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

翻译

邹铮
邹铮

相关推荐