如今云原生技术可以说是互联网最火的概念之一,作为云原生技术的重要基石 -- “容器” 技术,想必从业者早有学习并大量的运用在工作和日常开发中。
假如有人问你 “什么是容器?”, 你的答案是什么?
容器就是 Docker 吗?它和虚拟化技术有什么区别和联系?它的实现原理又是什么?
这篇文章主要通过 容器和虚拟化技术的对比,容器和 Linux Namespace 的关系,以及 Namespace 的初体验 三个模块让大家更了解什么是容器,以及容器实现的底层技术支撑 -- Liunx Namespace。
## 容器和虚拟化
有 Linux 学习经验的同学,想必有使用 VMware 和 VirtualBox 这种软件来安装 Linux 虚拟机的经历。一般是这样的流程,我们先在 windows 机器上安装 VMware 或者 VirtualBox 这类 Hypervisor 虚拟化软件,然后使用这类虚拟化软件将 Linux 的某种发行版镜像安装成为一个Linux 虚拟机,这样我们就拥有了一个 Linux 操作系统。
这种虚拟化软件是一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件,通过这种方式我们得到的虚拟机软硬件、内核一应俱全,可以说是功能完备的操作系统,它和宿主机隔离,我们在操作系统里可以放心大胆的做任何的修改,而不用担心对宿主机造成损害,这中资源的隔离型和功能的相似性,和容器表象上可以说是特别的相似。
刚开始接触 Linux 容器的我,习惯性的拿容器和虚拟机对比,认为容器就是一种轻量级的虚拟化技术,只是少了硬件资源的虚拟化,外加运行应用程序所必须的最小的文件系统。不知道有多少人也曾有过和我一样的理解,不得不说这种理解确实对刚接触容器时,理解容器有不少的帮助,但是这种说法却是不妥的,因为容器的实现机制和 Hypervisor 这种虚拟化技术是有本质却别的。
有疑问加站长微信联系(非本文作者))