容器(Docker)和IIS之间的区别

时间:2015-05-20 18:29:15

标签: windows iis docker

我正在学习容器(主要是Docker),因为它来自windows。而且好处与IIS非常相似。

我在为我的公司(业务线)构建应用程序的防火墙后面工作。我们有一堆虚拟机,每个虚拟机都托管一系列Web服务。 一台虚拟机可以在IIS上运行20多项服务。

在那种情况下,通过Docker部署我的服务让我觉得我还没有使用IIS?

注意:我对Docker来说是全新的,只具有IIS中的开发人员级别经验。

3 个答案:

答案 0 :(得分:6)

Docker不是IIS的替代品 - 它可以在容器中运行IIS之类的应用程序(我假设 - 不确定它在Windows上是如何工作的。)

Docker更像是VM的替代品 - VM和Docker容器之间的最大区别在于Docker容器比完整VM轻得多。您看到的通常声称是,您可以在主机上运行比VM更多的Docker容器(但您的里程可能会有所不同 - 其中一些声明有点......被夸大了。)

基本上,这个想法是这样的:VM是一个完整的虚拟机 - 一个运行在虚拟硬件之上的真实操作系统(对于操作系统而言看起来足够真实)。因此,你将获得所有的钟声和声音。操作系统的口哨声,包括您在运行IIS或其他HTTP服务器时可能不需要的内容。

另一方面,Docker只使用主机的操作系统,但采用了操作系统的一些有用功能,将容器中运行的进程与主机的其余部分隔离开来。因此,您可以在没有整个操作系统的开销的情况下获得VM的隔离(在出现故障或安全性时很有用)。

现在你可以运行" 20+服务"在单个Docker容器中,但通常不推荐使用。因为Docker容器非常轻量级,所以您可以(并且应该!)将它们限制为每个容器一个服务。这为您带来了诸如

等好处
  • 关注点分离:您的数据库容器就是那个 - 数据库。没有其他的。此外,它只处理使用它的应用程序的数据。

  • 提高安全性:如果您想以这种方式进行设置,只能从使用该数据库的应用程序访问您的数据库容器。

  • 安装了有限的东西:你的数据库容器应该只运行MySQL - 没有SSH守护进程,没有Web服务器,没有其他东西。简单&干净,每个容器只做一件事。

  • 可移植性:我可以配置我的图像,将它们拉到新主机,然后启动容器,我将保证在旧主机上具有完全相同的环境。 对开发非常有用。

这并不是说你无法使用虚拟机设置类似的东西 - 你当然可以 - 但想象一下应用程序中每个组件的完整虚拟机的开销。

例如,我最近的主要项目是在Apache上运行的Web应用程序,它带有MySQL数据库,redis服务器和三个微服务(每个都是一个在Lighttpd上运行的简单独立Web应用程序)。想象一下,为这个应用程序运行六个不同的服务器。

答案 1 :(得分:2)

Docker容器添加了对.NET,SQL Server以及与IIS集成的其他工作负载的支持。您还可以从docker可移植性中受益,因为您可以获取容器映像并在AWS或Azure上以及私下运行它们。而且,您可以访问基于docker的工具的大型生态系统。 。 。最重要的是,业界正在努力支持Docker API。

答案 2 :(得分:0)

要在容器中的IIS上承载Web应用程序,一个好的出发点是使用最新的IIS docker映像来将应用程序承载在IIS上,或者如果ASP.NET或WCF是目标平台,则使用来自这两个平台又包括IIS:

https://hub.docker.com/r/microsoft/iis/

https://hub.docker.com/r/microsoft/aspnet/

https://hub.docker.com/r/microsoft/wcf/