“容器”的理解(对比虚拟机)

  首先介绍下“虚拟化”这一概念:是一种资源管理技术,它抽象了计算机的实体资源(包括内存、存储、服务器、网络等等),并将这些资源进行转换,最终呈现出来加以运用,用户可以实现利用更优的组合状态来使用(简单理解:就是给用户提供了自定义去使用这些计算机的实体资源)

最常见的两种虚拟化技术:虚拟机Docker(容器)

一、虚拟机

  虚拟机的出现解决了一个服务器只能运行一个应用的问题,实现了操作系统/硬件的抽象。在物理服务器上搭建多个虚拟机,划分不同的计算资源,供上层应用使用。这就使得多个应用可以稳定安全地运行在同一个服务器,减少了服务器资源的闲置。

但这样也暴露了它的不足:在虚拟机技术中服务器与应用的映射关系从一对一变成了一对多,就会使得不同的虚拟机之间竞争宽带、宿主机端口资源(常说的端口被占)。负载较高时,虚拟机的性能就变得很差,资源利用下降,调度分发也变缓慢。

二、Docker

  针对于上述虚拟机的缺点,Docker容器技术实现了对不同的应用进行隔离。

2.1 Docker的三大核心:

(1)镜像(Image):相当于停止运行的容器,内部是一个精简的操作系统(OS),同时还包括运行应用所必须的文件和依赖包。

(2)容器(Countainer):可以理解为运行时的容器,是依据镜像创建出来的。

(3)仓库(Image Repository):用于存储镜像文件。

一个镜像仓库服务包含多个镜像仓库;而一个镜像仓库中可以包含多个镜像。

 2.2 Docker优势:

(1)轻量级的虚拟化,很轻松地创建、启动、停止和删除容器。

(2)超级集装箱:Docker可以装载系统、服务和应用,同时保证运行环境的统一性,能够很轻松的做到统一部署环境。

(3)多个容器共享一个操作系统,不需要Hypervisor(虚拟机监视器,用来建立与执行虚拟器的软件、固件和硬件),实现更轻松的迁移和秒级甚至毫秒级的启动时间。

(4)每个容器的命名空间唯一,所以实现了容器之间互不影响。这也使得运行在其中的应用程序实现独立和隔离的目的。

三、总结

  容器(Container)是一种更轻量级,更灵活的虚拟化处理方式,它将一个应用程序所需的一切打包在一起。容器包括所有代码,各种依赖甚至操作系统,这让应用程序几乎在任何地方都可以运行。因此它的诞生,解决了一个重要问题:如何确保应用程序从一个环境移动到另一个环境的正确运行。它只是虚拟了操作系统,而不像虚拟机一样去虚拟底层计算机。
Docker的出现让部署服务和系统运维的效率有了极大的提高,可以做到开发环境无缝迁移到生产环境。在生产环境中经常做的就是部署成千上万的服务,然后在这个基础上做负载均衡之类的事情,有了docker就能通过部署对应服务的容器镜像完成。有了docker还不够,因为我们需要管理成千上万的容器,于是就有了容器调度工具比如k8s之类的,我们可以做到监控容器运行状态,然后自动重启一些坏掉的容器,相当于做了热备份。把容器和容器调度跑到云端,这样结合起来的服务就是容器云。
 

posted on 2022-08-23 14:04  理想三旬_z  阅读(270)  评论(0编辑  收藏  举报

导航