Docker底层原理详解(图文全面总结)

云原生是大型架构核心,下面我详解Docker底层原理@mikechen

Docker核心技术

Docker 作为容器化技术的典型实现,其轻量、高效的特性。

Docker底层原理详解(图文全面总结)

依赖于操作系统层面的三个核心机制:Namespaces、Cgroups 和 UnionFS。

 

Namespaces(命名空间)

Docker底层原理详解(图文全面总结)

命名空间是内核提供的一种隔离机制,用以将全局系统资源划分为多个相互独立的视图。

主要类型包括:PID、NET、MNT、UTS、IPC 和 USER 等。

通过为每个容器创建独立的命名空间,容器内的进程获得独立的进程号空间、网络栈、挂载点、主机名等。

从而实现进程、网络与文件系统视角上的隔离。

举例:PID 命名空间使容器内的进程从 1 开始计数且不可见宿主机的其它进程。

NET 命名空间允许容器拥有独立的网络接口和路由表。

 

Cgroups(控制组)

Docker底层原理详解(图文全面总结)

控制组:用于对进程组的资源使用。

比如: CPU、内存、I/O、块设备带宽等)进行限制、优先级管理与统计。

Cgroups 将一组进程组织为层次化的控制单元,并为每类资源子系统分配配额或权重。

Docker 利用 cgroups 保证单个容器不会超出预设资源配额。

从而实现资源隔离与公平调度,防止“邻居”容器耗尽宿主机资源影响整体服务稳定性。

 

UnionFS(联合文件系统)

Docker底层原理详解(图文全面总结)

UnionFS 是一种将多个文件系统层(layer),以联合挂载方式合并为单一视图的技术。

Docker 镜像采用分层只读(read-only)镜像层、加可写层(container layer)的模式。

基础镜像及其历史层为只读层,新创建容器时增加一层可写层(通常称为 copy-on-write)。

通过分层存储,Docker 实现了镜像复用、构建缓存与高效分发。

同时 copy-on-write 策略在写时才复制文件,节省磁盘与内存开销。

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧