我正在学习容器(主要是Docker),因为它正在进入Windows。 而且好处与IIS非常相似。
我在为我的公司(业务线)创build应用程序的防火墙后面工作。 我们有一大堆的虚拟机,每个虚拟机都有一系列的Web服务。 一个虚拟机可以有20多个服务在IIS上运行。
在这种情况下,通过Docker部署我的服务是什么让我没有使用IIS?
注意:我对Docker完全陌生,只有在IIS中具有开发人员级别的经验。
Docker不是IIS的替代品 – 它可以在一个容器中运行像IIS这样的应用程序(我假设 – 不知道这是如何在Windows上工作的)。
Docker更像是VM的替代品 – VM和Docker容器最大的区别在于Docker容器比完整的VM轻得多。 你所看到的通常的说法是,你可以在主机上运行更多的Docker容器,而不是虚拟机(但是你的里程可能会有所不同 – 一些声称有些夸大了)。
基本上,这个想法是这样的:虚拟机是一个完整的虚拟机 – 一个运行在虚拟硬件之上的真正的操作系统(对操作系统来说看起来足够真实)。 因此,你将得到一个操作系统的所有钟声和哨声,包括你可能不需要的东西,如果你正在运行IIS或另一个HTTP服务器。
另一方面,Docker只是使用主机的操作系统,但是使用了一些有用的操作系统特性来将容器中运行的进程与主机的其余部分隔离开来。 所以,如果没有整个操作系统的开销,你可以隔离一个虚拟机(有用的情况下,失败或安全)。
现在,您可以在一个Docker容器中运行“20+服务”,但通常不建议这样做。 由于Docker容器非常轻便,因此您可以(也应该)将它们限制为每个容器一个服务。 这给你的好处,如
问题分离:你的数据库容器就是这样 – 一个数据库。 没有其他的。 此外,它只处理正在使用它的应用程序的数据。
提高了安全性:如果你想这样设置,你的数据库容器只能从使用该数据库的应用程序访问。
有限的东西安装:你的数据库容器应该只运行MySQL – 没有SSH守护进程,没有网络服务器,没有其他的东西。 简单而干净,每个容器只做一件事。
可移植性:我可以配置我的映像,把它们拉到一个新的主机上,并启动容器,我将保证在旧主机上拥有完全相同的新主机环境。 这对于开发非常有用。
这并不是说你不能用虚拟机设置类似的东西 – 你当然可以 – 但想象一下你的应用程序中每个组件的完整虚拟机的开销。
举个例子,我现在最主要的项目是一个运行在Apache上的Web应用程序,它包含一个MySQL数据库,一个redis服务器和三个微服务(每一个都是在Lighttpd上运行的一个简单的独立Web应用程序)。 想象一下为这个应用程序运行六个不同的服务器。
Docker容器添加了对.NET,SQL server和其他可与IIS集成的工作负载的支持。 您还可以从Docker的可移植性中受益,因为您可以携带您的容器映像,并在AWS或Azure上以及私有方式上运行它们。 而且,您可以访问基于Docker的大型生态系统工具。 。 。 底线,业界正在转向支持Docker API。