Windows 容器(Docker)和IIS之间的差异

Windows 容器(Docker)和IIS之间的差异,windows,iis,docker,Windows,Iis,Docker,我正在学习容器(主要是Docker),因为它将出现在windows上。其好处似乎与IIS非常相似 我在防火墙后面工作,为我的公司(业务线)构建应用程序。我们有一组虚拟机,每个虚拟机将承载一系列web服务一个VM可以在IIS上运行20多个服务。 在这种情况下,通过Docker部署我的服务会给我带来哪些我在使用IIS时还没有得到的好处 注意:我是Docker的新手,在IIS方面只有开发人员级别的经验。Docker不是IIS的替代品-它可以在容器中运行类似IIS的应用程序(我假设-不确定这在Windo

我正在学习容器(主要是Docker),因为它将出现在windows上。其好处似乎与IIS非常相似

我在防火墙后面工作,为我的公司(业务线)构建应用程序。我们有一组虚拟机,每个虚拟机将承载一系列web服务一个VM可以在IIS上运行20多个服务。

在这种情况下,通过Docker部署我的服务会给我带来哪些我在使用IIS时还没有得到的好处


注意:我是Docker的新手,在IIS方面只有开发人员级别的经验。

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

Docker更像是VM的替代品—VM和Docker容器之间的最大区别在于Docker容器比完整VM轻得多。你经常看到的说法是,你可以在一台主机上运行比虚拟机多得多的Docker容器(但是你的里程可能会有所不同——有些说法有点……夸大了)

基本上,这个想法是这样的:虚拟机是一个完整的虚拟机——一个运行在虚拟硬件之上的真实操作系统(对操作系统来说,它看起来足够真实)。因此,您将获得操作系统的所有功能,包括运行IIS或其他HTTP服务器时可能不需要的功能

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

现在,您可以在单个Docker容器中运行“20+服务”,但一般不建议这样做。因为Docker容器非常轻量级,所以您可以(而且应该!)将它们限制为每个容器一个服务。这将为您带来以下好处:

  • 关注点分离:您的数据库容器就是一个数据库。没有别的了。而且,它只处理正在使用它的应用程序的数据

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

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

  • 可移植性:我可以配置我的映像,将它们拉到新主机,并启动容器,我将保证在新主机上拥有与旧主机完全相同的环境。这对发展非常有用

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


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

Docker容器添加了对.NET、SQL Server和其他工作负载的支持,这些工作负载将与IIS集成。您还可以从docker的可移植性中获益,因为您可以将容器映像带到AWS或Azure上运行,也可以私下运行。而且,您可以访问一个基于docker工具的大型生态系统。归根结底,业界正在支持Docker API

要在容器中的IIS上承载web应用程序,一个好的起点是使用最新的IIS docker映像来承载IIS上的应用程序,或者如果ASP.NET或WCF是目标平台,则使用这两个平台的相关映像,这两个平台依次包括IIS:


你只关心网站吗?所以现在我有一个虚拟机在IIS中运行7个服务。如果我想切换到Docker,那么让虚拟机现在运行7个Docker容器的改变是什么?每个托管一个服务?还是我需要让docker在较低级别上运行?也许是“在金属上”?(我怀疑我的系统管理员会喜欢我在虚拟机之外运行任何东西。他们通过虚拟机软件管理所有东西,通常非常反对任何不允许他们使用这些工具的东西。)@Vaccano你应该明白Docker不能运行Windows(而Docker client可以)。假设您使用Linux,Docker倾向于为部署提供便利(每个服务一个容器)——它不会“启动”一个完整的系统,但会对所有内容进行沙箱处理并运行流程。也许您可以用Web服务器(如nginx、Apache、Lighttpd、H2O…)替换IIS,并将7个服务放在7个容器中,每个启动一个Web服务器。虽然你可以在docker中运行各种Windows软件(只要你安装wine和必要的东西),但目前IIS不能在wine中运行,你可以在Windows机器上的VM中运行docker,这就是我们办公室正在做的事情。来宾虚拟机正在运行Ubuntu14.04+Docker和SSH。VM目前运行大约8个应用程序(每个应用程序由一个或多个Docker容器组成)和2个微服务(每个容器一个)。主机是WindowsServer2003(我想)和微软的虚拟机监控程序。至于为7个服务运行7个Docker容器,您可以这样做-该体系结构非常灵活,您当然可以对其进行不同的配置。最后,当他们发布Docker for Windows时,我认为IIS将是首批受支持的应用程序之一。