我正在学习有关容器(主要是Docker)的信息,因为它已进入Windows。而且其好处似乎与IIS非常相似。
我在为公司(业务线)构建应用程序的防火墙后面工作。我们有一堆VM,每个VM将承载一系列Web服务。一台VM可以在IIS上运行20多个服务。
在那种情况下,通过Docker部署服务会导致我没有使用IIS的情况?
注意:我是Docker的新手,只有IIS的开发人员经验。
Docker不能替代IIS,它可以在容器内运行IIS之类的应用程序(我想-不确定在Windows上如何运行)。
Docker更像是VM的替代品-VM与Docker容器之间的最大区别是Docker容器比完整的VM轻得多。您通常会看到的说法是,主机上可以运行的Docker容器比VM还要多(但是您的工作量可能会有所不同-其中有些说法有些过分……夸大了)。
基本上,这个想法是这样的:VM是完整的虚拟机-在虚拟硬件之上运行的真实OS(对OS看起来足够真实)。因此,您将获得操作系统的所有细节,包括运行IIS或其他HTTP服务器时可能不需要的东西。
另一方面,Docker仅使用主机的操作系统,但利用操作系统的一些有用功能将容器中运行的进程与主机的其余部分隔离开来。这样就可以隔离VM(在发生故障或出于安全考虑时很有用),而不会占用整个OS的开销。
现在,您可以在单个Docker容器中运行“ 20多种服务”,但是通常不建议这样做。由于Docker容器非常轻巧,因此您可以(而且应该!)将它们限制为每个容器仅提供一项服务。这给您带来诸如
关注点分离:您的数据库容器就是那个-数据库。没有其他的。而且,它仅处理正在使用它的应用程序的数据。
更高的安全性:如果您希望以这种方式进行设置,则只能从使用该数据库的应用程序访问数据库容器。
有限的东西安装:您的数据库容器应该只运行MySQL-没有SSH守护程序,没有Web服务器,没有其他东西。简单而干净,每个容器只做一件事。
可移植性:我可以配置映像,将其拉到新主机上,然后启动容器,并且可以保证在新主机上与旧主机具有完全相同的环境。这对于开发非常有用。
这并不是说您无法使用VM进行类似的设置-当然可以-但是可以想象应用程序中每个组件的完整VM的开销。
举例来说,最近我的主要项目是一个在Apache上运行的Web应用程序,该应用程序带有MySQL数据库,redis服务器和三个微服务(每个微服务都在Lighttpd上运行一个简单的独立Web应用程序)。想象一下,为此应用程序运行六个不同的服务器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句