Files
docker_practice/underly/arch.md
2026-01-11 10:05:49 -08:00

52 lines
2.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 基本架构
Docker 采用了 `C/S`客户端/服务端架构包括客户端和服务端Docker 守护进程`Daemon`作为服务端接受来自客户端的请求并处理这些请求创建运行分发容器
客户端和服务端既可以运行在一个机器上也可通过 `socket` 或者 `RESTful API` 来进行通信
![Docker 基本架构](../.gitbook/assets/docker_arch.png)
## 核心组件
Docker 的核心组件形成了一个层次化的架构
```
┌─────────────────────────────────────────────────┐
│ Docker CLI │
│ (docker 命令行工具) │
├─────────────────────────────────────────────────┤
│ dockerd │
│ (Docker 守护进程/引擎) │
├─────────────────────────────────────────────────┤
│ containerd │
│ (容器生命周期管理器) │
├─────────────────────────────────────────────────┤
│ runc │
│ (OCI 容器运行时) │
└─────────────────────────────────────────────────┘
```
* **Docker CLI**用户与 Docker 交互的命令行工具
* **dockerd**Docker 守护进程提供 Docker API管理镜像网络存储等
* **containerd**高级容器运行时管理容器的完整生命周期
* **runc**低级容器运行时根据 OCI 规范创建和运行容器
## Docker Desktop 架构
macOS Windows Docker Desktop 使用轻量级虚拟机运行 Linux 内核
* **macOS**使用 Apple Hypervisor Framework QEMU
* **Windows**使用 WSL 2推荐 Hyper-V
这意味着容器实际运行在虚拟机内的 Linux 环境中而非直接运行在宿主系统上
## Docker Engine v29 重要变化
Docker Engine v29 **Containerd 镜像存储**成为新安装的默认配置这一变化
* 简化了 Docker 的内部架构
* 提升了与 Kubernetes containerd 平台的互操作性
* Lazy Pulling 等新特性奠定基础
Docker 守护进程一般在宿主主机后台运行等待接收来自客户端的消息Docker 客户端则为用户提供一系列可执行命令用户用这些命令实现跟 Docker 守护进程交互