Docker容器中的asp.net核心与Azure App服务

时间:2017-09-04 04:59:29

标签: docker asp.net-core azure-web-app-service

我们现在显然可以将我们的asp.net核心应用程序部署到docker容器中。 我浏览了关于如何做到的文档'但我无法找到关于“为什么要这样做”的正确解释?

有人可以解释为什么会选择将asp.net核心应用程序部署到docker容器而不是azure app service吗?

5 个答案:

答案 0 :(得分:7)

  

有人可以解释为什么会选择将asp.net核心应用程序部署到docker容器而不是azure app service吗?

所有Azure Web App都在名为sandbox的安全环境中运行。沙箱机制旨在确保在机器上运行的每个应用程序都具有最低保证服务级别;此外,沙箱强制执行的运行时限制可以保护应用程序免受可能在同一台计算机上运行的其他资源密集型应用程序的不利影响。

由于所有Azure Web App都在相同类型的沙箱中运行。 Azure Web App提供与部署和监视Web应用程序相关的多种功能。例如,记录,远程调试,Kudu,站点扩展等。

由于所有Azure Web App都在相同类型的沙箱中运行,因此沙箱限制将影响您的Web应用程序。

General Sandbox Restrictions

如果您的网络应用使用的API或功能不受沙盒限制,您可以选择Azure Web App以使用Azure Web App提供的功能/工具。否则,您可以选择停靠容器。

答案 1 :(得分:6)

明显有理由支持Docker镜像而不是应用服务,这将是可移植性。如果您想从Azure切换到其他云平台,您只需将预配置的docker镜像部署到其他平台的容器管理服务,它就可以在那里工作,而如果您想将应用程序从app服务移动到在其他一些云平台上提供一些等效的服务,您需要花时间了解它的工作原理,然后在新的地方重新配置它。

答案 2 :(得分:4)

Docker无需将您的应用部署到云提供商(如azure)。云提供商为您提供部署应用程序的基础架构或平台。如果您没有自己的服务器来部署应用程序,无论您是否使用docker,都需要这样做。

Docker使您的应用程序部署更加可预测和轻松,因为它在应用程序和用于运行应用程序的计算机之间提供了大量隔离。

现在使用Docker和云平台部署应用程序非常受欢迎。当您使用Docker时,可以确信相同的应用程序映像将能够在不同的平台上运行,因此您可以在不同的提供程序(甚至私有服务器)之间切换,而无需修改您的应用程序。

答案 3 :(得分:1)

尽管Docker支持越来越好,但是使用Docker在本地进行开发存在一些问题,例如https://github.com/docker/for-win/issues/3168这样的时间同步。那些日子有更好的支持,例如“ Azure Dev Spaces”,它使得可以在不在本地运行的集群中运行微服务,因此消除了在笔记本电脑上运行所有所需映像的要求。配置群集后,简化部署和管理有很多好处,但我仍然不喜欢为其开发。

我个人不赞成Kubernetes(AKS),Docker Swarm等。它需要群集配置,我只推荐在大型微服务体系结构中使用,而人们不希望使用无服务器体系结构(例如Azure Functions),但是这里不是问题。没那么容易,如何处理证书和端口绑定? Docker存储,曾经使用过Docker数据卷吗?这不是很友好。可以改进监视,如果出现问题怎么办?在哪里可以找到更多信息?我觉得很难。

Azure Web Apps提供与Azure DevOps,部署插槽,应用程序见解,应用程序标识的良好集成! (称为MSI)。使用App Service证书,自定义域和许多开发人员实用程序自动更新证书,将Visual Studio附加为调试器非常容易。使用App Service编辑器,您可以尝试在Web.Config中进行修改,而无需重新映像Docker映像。

我认为:如果您不希望任何供应商锁定,则可以使用Docker映像,否则可以使用Azure Function App v2或Azure Web Apps。

我的最爱#1:无服务器

  • Azure-> Function App v2(与Eventgrid和Logic Apps结合使用)
  • Amazon-> AWS Lambda

我的最爱#2: PaaS

  • Azure-> Azure Web Apps
  • Amazon-> AWS Elastic Beanstalk

其他 Docker

  • Azure-> Azure Kubernetes服务
  • Amazon-> Amazon Elastic Container Service / Amazon Elastic Kubernetes服务/ AWS Fargate

即使它提供了总体上最多的控制权,我也不会再选择IaaS。

答案 4 :(得分:0)

选择一个而不是另一个时需要考虑一百万件事情。但只提一个:

如果您正在考虑使用 gRPC,那么至少在撰写本文时,Azure 应用服务不是一种选择。请参阅此GitHub Issue

根据 GitHub 问题,AKS 是一个很好的解决方法。顺便说一句,“解决方法”这个词在这里并不是要贬低 AKS。这两种技术各有千秋。