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

Vac*_*ano 11 windows iis docker

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

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

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

注意:我是Docker的新手,只具有IIS中的开发人员级别经验.

Kry*_*ten 6

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

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

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

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

现在,您可以在单个Docker容器中运行"20+服务",但通常不建议这样做.因为Docker容器非常轻量级,所以您可以(并且应该!)将它们限制为每个容器一个服务.这给你带来诸多好处

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

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

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

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

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

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