大多数生产环境中基于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中国
作者
翻译
相关推荐
-
Pure提供全托管VMware迁移到Azure
Pure Storage推出一项新服务,旨在帮助客户将本地VMware环境迁移到Microsoft Azure […]
-
如何解决Java虚拟线程固定问题
虚拟线程是Java的Project Loom项目引入的一种全新线程模型,并随Java 21 LTS正式发布,虚 […]
-
对最终用户而言,虚拟机安全吗?
虚拟机可为用户工作会话提供安全隔离,但人们不太确定这项技术的安全性。在企业部署虚拟机之前,管理层必须了解这项技 […]
-
最新VMware产品发布让博通面临挑战
分析师表示,很多企业仍然不确定是否应该继续使用Broadcom的VMware,该供应商最近对其混合云平台做出重 […]