摘要:Docker是云原生的核心,也是大厂必备技能,下面我就全面来详解Docker运行原理@mikechen
大家好,我是mikechen睿哥。
Docker是云原生的核心,也是大厂必备技能,下面我就全面来详解Docker运行原理@mikechen
Docker运行原理
Docker 是一种轻量级容器化技术,允许开发者打包应用及其依赖到一个可移植的容器中,并在不同环境中一致运行。
Docker 容器运行时的核心原理,可以从: 架构组成、核心技术 、和 运行流程 三个层面来理解。
Docker架构
Docker架构,如下图所示:
1. Docker Client(客户端)
与用户交互,如执行 docker run、docker build 等命令。
实际不做执行逻辑,而是将请求发给 Docker Daemon。
2. Docker Daemon(服务端)
是 Docker 的守护进程,运行在后台。
负责构建、运行和管理容器生命周期。
对接 Linux 内核的相关技术(如 namespace、cgroups)。
3. Docker Registry(镜像仓库)
存储镜像(如官方的 Docker Hub、本地 Harbor)。
docker pull、docker push 与之交互。
4. Docker Image & Container
Image(镜像):只读模板,如应用快照。
Container(容器):镜像运行时的实例,有独立环境和进程空间。
Docker核心技术
Docker 底层,依赖 Linux 的几个核心特性来实现容器隔离、和资源控制。
Linux Namespaces (命名空间):
提供隔离机制,使得每个容器拥有独立的系统视图,包括 PID、网络、挂载点、UTS、IPC 和 User 命名空间。
Linux Cgroups (Control Groups,控制组):
提供资源限制和管理能力,可以限制容器的 CPU、内存、磁盘 I/O 和网络带宽等资源使用。
UnionFS (联合文件系统):
用于构建分层镜像,将多个只读层合并成一个可读写的文件系统,实现镜像的轻量化和高效分发。
容器镜像 (Container Images)
轻量级、可执行的软件包,包含运行应用程序所需的所有内容,例如代码、运行时环境、库、环境变量和配置文件。
容器 (Containers):
镜像的运行时实例,是隔离的进程,拥有自己独立的文件系统、网络和进程空间。
Docker运行流程
Docker运行流程,如下:
用户执行 docker run 命令↓DockerClient发送请求到DockerDaemon↓DockerDaemon检查镜像是否存在(本地/远程拉取)↓基于镜像解压生成容器文件系统(利用UnionFS)↓设置namespace和 cgroups,创建隔离环境↓初始化网络、挂载卷、设置环境变量等↓调用 containerd + runc 启动容器进程↓容器开始运行,PID=1为主进程总之,Docker 的运行原理基于 Linux 内核的命名空间、Cgroups 和 UnionFS,结合 containerd 等运行时,提供轻量、高效的容器化解决方案。
以上
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
来源:小太阳说科技