Azure容器实例和Web App for Containers有什么区别?

39

我刚刚使用 Azure 多容器实例部署了一个 Web 应用程序(使用 node.js 容器和 mongo 容器)。这有点像 Docker Compose,但需要使用 Azure 特定的 yaml 文件:https://learn.microsoft.com/en-us/azure/container-instances/container-instances-multi-container-yaml

现在我发现有一种名为 "Azure Web App for Containers" 的东西。它似乎可以使用真正的 docker-compose yaml 文件。

除了配置文件格式之外,还有其他区别吗?

注意:我说的是 Azure 容器 实例,而不是 Azure 容器 服务


附注:显然,“用于容器的 Web 应用程序”等同于使用自定义容器的应用服务。 - spottedmahn
4个回答

32

嗯,Azure容器实例(ACI)只会在容器运行时收取费用,而Web应用程序(Webapp)则会在其存在期间一直收费。这就是它们之间最大的差异之一。

但总体来说,我认为Azure Web App for Containers只是在现有“东西”上运行容器的快捷方式。我最近了解到,Azure Web App for Containers提供Kubernetes功能,因此这两个服务朝着稍微不同的方向发展。Azure Web App for Containers针对长时间运行的东西(始终运行),而ACI针对计划好、突发性和短期工作负载(类似于Azure Functions)。


1
你能提供任何证实ACI针对短期运行场景的链接吗? - John Knoop
1
这基本上是定义的一部分。(https://learn.microsoft.com/zh-cn/azure/container-instances/container-instances-overview) - 4c74356b41
2
读取前5行怎么样?Azure容器实例是一个非常适合在隔离容器中运行的任何场景的解决方案,包括简单应用程序、任务自动化和构建作业。对于需要完整容器编排的场景,包括跨多个容器的服务发现、自动缩放和协调应用程序升级,我们推荐使用Azure Kubernetes Service(AKS)。 - 4c74356b41
3
这段内容并没有支持ACI仅“针对短暂的工作负载”的说法。它仅表示ACI适用于孤立的容器,而不是编排多个容器的场景。 - John Knoop
4
@Rikki 没有人质疑它们适用于那些用途的事实。问题是,ACI是否_仅仅_适用于那些用途。我刚刚查看了最新的ACI文档,他们也说ACI适用于带有无服务器优势的“简单应用程序”,因此我仍然希望得到一些明确的指导,无论官方是否建议不要将其用于长期运行的应用程序。 - John Knoop
显示剩余3条评论

5

发现这个链接,里面有MS员工的答案

总结

Web App for Containers

  • 如果您已经熟悉Azure Web App环境,则建议使用。
  • 如果您有一个或几个长时间运行的容器/服务需要部署,则最好使用。
  • 可以使用自定义的Docker镜像,在Azure中未定义的应用程序堆栈上运行您的Web应用程序。

Azure Container Instances

  • “Azure容器实例是一个非常好的解决方案,适用于可以在隔离容器中运行的任何场景,包括简单应用程序、任务自动化和构建作业”
  • 一种快速、轻量级和简便的容器运行方式 计费基于容器活动时间(按秒、核心和内存计费)
  • 可以在几秒钟内启动Azure容器,无需预配和管理虚拟机。
  • 还可以通过试验性的ACI到Kubernetes连接器与Kubernetes一起使用
  • 目前,在Azure上部署容器的最快方法
  • 根据Azure文档,“Azure容器实例保证您的应用程序在容器中的隔离程度与在虚拟机中相同。”

4
除了其他答案提到的区别之外,Web App for Containers还提供了“插槽”,您可以在同一分配的资源上运行多个镜像,以帮助增加利用率。由于容器实例按使用时间计费,因此它们没有“插槽”。

2
这里有一篇关于Microsoft Learn的好文章,名为:比较容器应用与其他Azure容器选项Azure容器实例 Azure容器实例(ACI)提供按需的单个Hyper-V隔离容器pod。与Container Apps相比,它可以被视为较低级别的“构建块”选项。例如,规模、负载平衡和证书等概念不适用于ACI容器。例如,要扩展到五个容器实例,您需要创建五个不同的容器实例。Azure容器应用程序在容器之上提供许多应用程序特定的概念,包括证书、修订、规模和环境。用户通常通过其他服务与Azure容器实例进行交互。例如,Azure Kubernetes Service可以通过虚拟节点在ACI之上进行编排和扩展。如果您需要一个不太“有见解”的构建块,而不是针对Azure容器应用程序优化的场景,则Azure容器实例是一个理想的选择。 Azure应用服务 Azure App Service(Azure App Service)提供完全托管的 Web 应用程序托管,包括网站和 Web API。这些 Web 应用程序可以使用代码或容器部署。Azure App Service 针对 Web 应用程序进行了优化,并与其他 Azure 服务集成,包括 Azure 容器应用程序或 Azure 函数。在构建 Web 应用程序时,Azure App Service 是一个理想的选项。
Azure Web App for Containers 和 Azure Web App 是相同的服务,并且它们使用一个 App Service 计划。唯一的区别是默认情况下,发布设置为 Docker 容器而不是代码。

https://azure.microsoft.com/en-us/products/app-service/web/

https://azure.microsoft.com/en-us/products/app-service/containers/#overview

enter image description here

enter image description here

从文章中可以看到其他的选择:
团队在Azure上构建和部署云原生和容器化应用程序有许多选项。
- Azure容器应用 - Azure应用服务 - Azure容器实例 - Azure Kubernetes服务 - Azure函数 - Azure Spring应用 - Azure Red Hat OpenShift
Azure容器应用
Azure容器应用使您能够构建基于容器的无服务器微服务。容器应用的独特功能包括:
- 优化运行通用容器,特别是跨多个部署在容器中的微服务的应用程序。 - 基于Kubernetes和开源技术(如Dapr、KEDA和envoy)。 - 支持Kubernetes风格的应用程序和微服务,具有诸如服务发现和流量分割等功能。 - 通过支持基于流量和从队列等事件源拉取的规模,实现事件驱动的应用程序架构,包括零缩放。 - 支持长时间运行进程,并且可以运行后台任务。
Azure容器应用程序不提供对底层Kubernetes API的直接访问。如果您需要访问Kubernetes API和控制平面,则应使用Azure Kubernetes服务。但是,如果您想构建类似于Kubernetes的应用程序并且不需要直接访问所有本机Kubernetes API和群集管理,则Container Apps提供基于最佳实践的完全托管体验。因此,许多团队可能更喜欢使用Azure Container Apps开始构建容器微服务。

您可以使用快速入门开始构建您的第一个容器应用程序。

Azure Kubernetes服务

Azure Kubernetes服务(AKS)在Azure中提供了一个完全托管的Kubernetes选项。它支持直接访问Kubernetes API并运行任何Kubernetes工作负载。整个集群驻留在您的订阅中,集群配置和操作由您控制和负责。寻找在Azure中完全托管的Kubernetes版本的团队,Azure Kubernetes服务是一个理想的选择。

Azure函数

Azure Functions是一种无服务器的函数即服务(FaaS)解决方案。它针对使用函数编程模型运行事件驱动应用程序进行了优化。它与Azure容器应用程序在规模和与事件集成方面具有许多相似之处,但是针对作为代码或容器部署的短暂函数进行了优化。Azure Functions编程模型为团队触发函数执行和绑定到其他数据源提供了生产力优势。构建FaaS风格的函数时,Azure Functions是理想的选择。Azure Functions编程模型可用作基本容器映像,使其可移植到其他基于容器的计算平台,从而允许团队在环境要求发生变化时重用代码。 Azure Spring Apps是Spring开发人员的平台即服务(PaaS)。如果您想在Azure上运行Spring Boot、Spring Cloud或任何其他Spring应用程序,则Azure Spring Apps是一个理想的选择。该服务管理Spring应用程序的基础设施,因此开发人员可以专注于他们的代码。Azure Spring Apps使用全面的监视和诊断、配置管理、服务发现、CI/CD集成、蓝绿部署等提供生命周期管理。
Azure Red Hat OpenShift Azure Red Hat OpenShift 是由红帽(Red Hat)和微软(Microsoft)共同开发、运营和支持的产品,旨在为运行基于 Kubernetes 的 OpenShift 提供集成的产品和支持体验。使用 Azure Red Hat OpenShift,团队可以选择自己的注册表、网络、存储和 CI/CD 解决方案,或者使用 OpenShift 中内置的解决方案进行自动化源代码管理、容器和应用构建、部署、扩展、健康管理等。如果您的团队或组织正在使用 OpenShift,则 Azure Red Hat OpenShift 是一个理想的选择。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接