假设我们有一个带有安装了 Docker 的 Ubuntu 操作系统的系统,可以在其上运行任何风格的操作系统,只要它们都基于相同的内核。
所以它实际上是 Windows上 Linux 虚拟机上的 Linux 容器
Docker 并不意味着在同一硬件上虚拟化和运行不同的操作系统和内核。 Docker 的主要目的是对应用程序进行打包和容器化,然后将它们传送并随时随地运行它们,对于 Docker,我们有底层硬件、基础设施然后是操作系统,然后是在操作系统上安装的 Docker。 然后,Docker 会单独管理使用库和依赖项运行的容器。对于虚拟机,我们在硬件上有像 ESX 这样的管理程序,然后在它们上面有虚拟机。 如您所见,每个虚拟机内部都有自己own然后是依赖项,然后是应用程序由于有多个虚拟操作系统和内核在运行,因此开销会导致底层资源利用率更高。虚拟机还消耗了更高的磁盘空间,因为每个 VM 都很重,通常以千兆字节为单位,而 Docker 容器是轻量级的,通常以兆字节为单位。 这使得Docker 容器启动更快,通常只需几秒钟,而我们所知道的 VM 需要几分钟才能启动,因为它需要启动整个操作系统。 同样重要的是要注意 Docker 的隔离度较低,因为更多资源在容器之间共享,例如内核,而 VM 彼此完全隔离由于 VM 不依赖于底层操作系统或内核,您可以在同一管理程序上运行基于不同服务构建的不同类型的应用程序,例如基于 Linux 或基于 Windows 的应用程序。所以这些是两者之间的一些差异。
拥有在 1000 台 Docker 主机上运行 1000 台应用程序容器的大型环境时,您经常会看到在虚拟 Docker 主机上配置的容器。 这样,我们就可以利用这两种技术的优势,我们可以利用虚拟化的优势,根据需要轻松配置 或停用 Docker 主机,同时利用 Docker 的优势轻松配置应用程序并快速扩展它们 按要求。 但请记住,在这种情况下,我们不会像以前那样配置那么多虚拟机,因为之前,我们为每个应用程序配置了一个虚拟机。 现在,您可能会为数百或数千个容器配置一个虚拟机。 那么它是如何完成的呢? 截至目前,有许多容器化版本的应用程序随时可用。 因此,大多数组织都将他们的产品容器化,并在名为 Docker Hub 或 Docker 商店的公共 Docker 存储库中提供。例如,您可以找到最常见的操作系统、数据库和其他服务和工具的图像。 一旦你确定了你需要的图像,你就可以在你的主机上安装 Docker。 启动应用程序就像使用图像名称运行 Docker 运行命令一样简单。 在这种情况下运行 Docker run Ansible 命令将在 Docker 主机上运行 Ansible 实例。 同样,使用 Docker 运行命令image是一个包或模板,就像您在虚拟化世界中使用过的 VM 模板一样创建一个或多个容器。 容器是独立运行的镜像实例有自己的环境和进程集。