云原生是大型架构核心,下面我详解Docker底层原理@mikechen
Docker核心技术
Docker 作为容器化技术的典型实现,其轻量、高效的特性。

依赖于操作系统层面的三个核心机制:Namespaces、Cgroups 和 UnionFS。
Namespaces(命名空间)

命名空间是内核提供的一种隔离机制,用以将全局系统资源划分为多个相互独立的视图。
主要类型包括:PID、NET、MNT、UTS、IPC 和 USER 等。
通过为每个容器创建独立的命名空间,容器内的进程获得独立的进程号空间、网络栈、挂载点、主机名等。
从而实现进程、网络与文件系统视角上的隔离。
举例:PID 命名空间使容器内的进程从 1 开始计数且不可见宿主机的其它进程。
NET 命名空间允许容器拥有独立的网络接口和路由表。
Cgroups(控制组)

控制组:用于对进程组的资源使用。
比如: CPU、内存、I/O、块设备带宽等)进行限制、优先级管理与统计。
Cgroups 将一组进程组织为层次化的控制单元,并为每类资源子系统分配配额或权重。
Docker 利用 cgroups 保证单个容器不会超出预设资源配额。
从而实现资源隔离与公平调度,防止“邻居”容器耗尽宿主机资源影响整体服务稳定性。
UnionFS(联合文件系统)

UnionFS 是一种将多个文件系统层(layer),以联合挂载方式合并为单一视图的技术。
Docker 镜像采用分层只读(read-only)镜像层、加可写层(container layer)的模式。
基础镜像及其历史层为只读层,新创建容器时增加一层可写层(通常称为 copy-on-write)。
通过分层存储,Docker 实现了镜像复用、构建缓存与高效分发。
同时 copy-on-write 策略在写时才复制文件,节省磁盘与内存开销。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注作者「mikechen」公众号,获取更多技术干货!
后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》