插件窝 干货文章 docker是基于什么的引擎

docker是基于什么的引擎

容器 宿主机 内核 Docker 957    来源:    2025-05-02

Docker 是基于 Linux 容器(LXC, Linux Containers) 技术发展而来的轻量级虚拟化引擎,其核心依赖以下关键技术:


1. Linux 内核特性

  • Namespaces
    实现进程隔离(PID、网络、文件系统、用户等),确保容器内进程无法感知或干扰其他容器或宿主机。
    • 例如:pid_namespace 让每个容器拥有独立的进程树。
  • Control Groups (cgroups)
    限制和分配资源(CPU、内存、磁盘I/O等),防止单个容器耗尽宿主机资源。
  • Union File Systems (如 OverlayFS、AUFS)
    通过分层存储实现镜像的轻量化和高效复用,容器共享基础镜像层,仅存储差异层。
  • Seccomp & Capabilities
    限制容器对宿主机内核的系统调用,提升安全性。

2. 容器运行时(Container Runtime)

  • 早期:Docker 直接使用 LXC,后替换为自研的 libcontainer(Go语言实现)。
  • 现代:默认使用 containerd(符合 OCI 标准的高层运行时),底层通过 runc(OCI 参考实现)创建容器。

3. 标准化与开放生态

  • OCI (Open Container Initiative)
    Docker 推动的开放标准,定义容器镜像格式(OCI Image Spec)和运行时规范(OCI Runtime Spec),使 Docker 镜像兼容其他工具(如 Podman)。
  • CRI (Container Runtime Interface)
    允许 Docker 与 Kubernetes 等编排系统集成。

4. 与传统虚拟化的区别

特性 Docker (容器) 传统虚拟机 (VM)
隔离级别 进程级(共享宿主机内核) 硬件级(独立虚拟化内核)
启动速度 秒级(无需启动完整OS) 分钟级(需启动Guest OS)
性能损耗 低(直接调用宿主机内核) 高(虚拟化层开销)
镜像大小 MB 级(仅包含应用和依赖) GB 级(包含完整OS)

5. 跨平台支持

  • Linux:原生支持,直接调用内核特性。
  • Windows/macOS:通过轻量级虚拟机(如 Hyper-V、QEMU)运行 Linux 内核,再启动容器(例如 Docker Desktop 的 LinuxKit 虚拟机)。

总结

Docker 本质是一个封装了 Linux 内核容器技术的工具链,通过标准化接口(OCI)和分层镜像设计,简化了容器的创建、分发和运行。其高效性源于直接利用宿主机的内核,而非模拟硬件。