容器和虚拟机的区别
每台虚拟机都需要自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用,每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。
容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配,容器包含应用和其所有的依赖包,但是与其他容器共享内核,容器在宿主机操作系统中,在用户空间以分离的进程运行。容器技术是实现操作体统虚拟化的一种途径,可以让你在资源受到隔离的进程中运行应用程序及其依赖关系。
代表性的容器技术:
Docker和Kubernates(K8S)
Docker的优势
Docker启动快速属于秒级别,虚拟机通常需要几分钟。
Docker需要的资源更少,Docker在操作系统级别进行虚拟化,Docker容器和内核交互,几乎没有性能损耗,性能优于通过Hypervisor层与内核层的虚拟化。
Docker更轻量,它的架构可以共用一个内核与共享应用程序库,所占内存极小,同样的硬件环境,Docker运行的镜像数远多于虚拟机数量,对于系统的利用率非常高。
Docker的劣势
和虚拟机相比,Docker隔离性更强,它属于进程之间的隔离,虚拟机可实现系统级别隔离。
Docker的安全性也更弱,Docker的租户root和宿主机的root等同,一旦容器内的用户从普通用户权限提升为root权限,它就直接具备了宿主机的root权限,进而可进行无限制的操作。
Docker的三元素
镜像:一个文件系统,提供容器运行时所需的程序、库、资源、配置文件等等。
容器:镜像运行实例,可读写的镜像。
仓库:集中存放镜像文件的场所。