1、容器
内容来源:https://docs.microsoft.com/zh-cn/dotnet/architecture/microservices/container-docker-introduction/
容器的本质,一句话解释,就是一组受到资源限制,彼此间相互隔离的进程。
容器化是软件开发的一种方法,通过该方法可将应用程序或服务、其依赖项及其配置(抽象化为部署清单文件)一起打包为容器映像。 容器化应用程序可以作为一个单元进行测试,并可以作为容器映像实例部署到主机操作系统 (OS)。
就像船只、火车或卡车运输集装箱而不论其内部的货物一样,软件容器充当软件部署的标准单元,其中可以包含不同的代码和依赖项。 按照这种方式容器化软件,开发人员和 IT 专业人员只需进行极少修改或不修改,即可将其部署到不同的环境。
容器还会在共享 OS 上将应用程序彼此隔离开。 容器化应用程序在容器主机上运行,而容器主机在 OS(Linux 或 Windows)上运行。 因此,容器的占用比虚拟机 (VM) 映像小得多。
每个容器可以运行整个 Web 应用或服务,如图所示。 在此示例中,Docker 主机是容器主机,而 App1、App2、Svc 1 和 Svc 2 是容器化应用程序或服务。
容器化的另一个优势在于可伸缩性。 通过为短期任务创建新容器,可以快速扩大。 从应用程序的角度来看,实例化映像(创建容器)类似于实例化 服务或 Web 应用等进程。 但出于可靠性考虑,在多个主机服务器上运行同一映像的多个实例时,通常要使每个容器(映像实例)在不同容错域中的不同主机服务器或 VM 中运行。
总而言之,容器在整个应用程序生命周期工作流中提供以下优点:隔离性、可移植性、灵活性、可伸缩性和可控性。 最重要的优点是可在开发和运营之间提供隔离。
2、Docker
Docker在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得Docker
技术比虚拟机技术更为轻便、快捷。
传统虚拟化方式与Docker的不同:
- 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;
- 而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。
因此容器要比传统虚拟机更为轻便。
从上面的图中可以看到,虚拟机在宿主机(host)中的OS上面是hypervisor(虚拟机监视器),然后依次建立虚拟机,虚拟化的仓库,然后安装程序。但是对于Docker来说,在宿主机(host)中的OS上面是Docker Engine,然后直接在Doker Engine安装应用。
【VC小注】个人简单理解,虚拟机就是在主机上虚拟出一个计算机,名义上是一个独立的计算机,计算机有啥它有啥,依托于主机的资源;容器是把计算机资源进行分装使用,是相对独立的,是主机的一部分。