Docker底层实现(一些底层原理)
Docker底层的核心技术包括Linux上的命名空间(Namespace)、控制组(Control groups)、Union文件系统(Union file systems)和容器格式(Container format)。
传统的虚拟机通过在宿主主机中运行hypervisor来模拟一整套完整的硬件环境系统提供给虚拟机的操作系统。虚拟机系统看到的环境是可限制的,也是彼此隔离的。这种直接的做法实现了对资源的完整封装,但很多时候往往意味着系统资源的浪费。例如,Linux上运行Linux虚拟机,虚拟机中运行的应用其实可以利用宿主机系统中的运行环境。
可以通过Linux的命名空间实现大家虽然都共用一个内核和某些运行时环境(例如一些系统命名和系统库),但是彼此却看不到,都以为系统中只有自己的存在。这种机制就是容器(Container),利用Namespace来做权限的隔离控制,利用cgroups来做资源分配。
基本架构
Docker采用了C/S架构,包括客户端和服务端。Docker守护进程(Daemon)作为服务端接收来自客户端的请求,并处理这些请求(创建、运行、分发容器)。
客户端和服务端既可以运行在一个机器上,也可以通过soc