Docker核心原理详解(图文全面总结)

Docker是云原生的核心,掌握好Docker核心原理,对于掌握好Docker至关重要@mikechen

Docker

Docker 是一个开源的容器化平台,它允许开发者将应用程序、及其依赖项打包到一个称为容器的轻量级、可移植的单元中。

Docker核心原理详解(图文全面总结)

这些容器可以在任何支持 Docker 的环境中运行,从而实现了“一次构建,到处运行”的目标。

Docker 提供了快速构建、测试和部署应用程序的工具,缩短了开发周期。

Docker 容器非常适合:用于构建、和部署微服务应用程序。

 

Docker核心原理

Docker 的核心原理:基于 Linux 内核的以下三个关键特性。

Docker核心原理详解(图文全面总结)

Linux Namespace(命名空间)机制

命名空间是 Linux 内核提供的一种资源隔离机制,能让不同的进程组看到不同的系统视图(如 PID、网络、文件系统等)。

Docker 利用 Namespace 来创建隔离的容器环境,使得每个容器都拥有自己的独立命名空间,包括:

类型 隔离资源 示例
pid 进程号空间 容器内看不到宿主进程
net 网络接口、端口等 每个容器拥有独立 IP
mnt 挂载点、文件系统 容器内部的目录结构隔离
uts 主机名、域名 容器拥有自己的 hostname
ipc 信号量、消息队列 容器间 IPC 隔离
user 用户和权限 容器可映射非 root 用户

 

Linux Cgroups(控制组)机制

Cgroups 是 Linux 内核的另一项功能,它允许限制和隔离进程的资源使用。

Docker核心原理详解(图文全面总结)

Docker 利用 Cgroups 来控制容器的资源消耗,包括:

CPU: 限制 CPU 使用率;

比如:限制 CPU 核心

docker run --cpus=1 nginx

内存: 限制内存使用量;

比如:限制容器最多只能使用 512M 内存:

docker run -m 512m nginx

磁盘 I/O: 限制磁盘读写速度;

网络带宽: 限制网络带宽。

通过以上面的限制,可以防止某个容器占满系统资源,以及控制资源成本。

 

联合文件系统(UnionFS)机制

UnionFS 是一种分层文件系统,可以将多个目录(层)合并成一个虚拟文件系统,实现镜像的分层构建与复用。

Docker核心原理详解(图文全面总结)

UnionFS 是一种分层文件系统,它允许将多个文件系统层叠加在一起,形成一个单一的文件系统视图。

当容器启动时,Docker 在只读层之上创建一个可写层,容器对文件系统的修改都发生在这一层。

这种分层结构使得镜像构建和分发更加高效,并且节省了存储空间。

总之,Docker核心原理:本质是 Linux 内核的 Namespace、Cgroups 和 UnionFS 三大机制的完美组合。

陈睿mikechen

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

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

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

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