摘要:Docker是大型架构的必备技能,也是云原生核心,下面我重点详解Docker核心原理@mikechen
大家好,我是mikechen。
Docker是大型架构的必备技能,也是云原生核心,下面我重点详解Docker核心原理@mikechen
文章来源:mikechen.cc
Docker核心技术
Docker 容器技术的核心:在于实现进程、和资源的隔离、与管理。
这主要依赖于 Linux 内核的两大特性:Namespace(命名空间)和Cgroups(控制组)。
Namespace 实现了隔离 (Isolation):,它让容器拥有自己独立的系统视图,包括进程、网络、文件系统挂载点等。
Cgroups 实现了资源管理 (Resource Management),它限制和监控容器可以使用的资源,例如 CPU、内存、磁盘 I/O 等。
这两者相互配合,为 Docker 容器提供了基本的隔离性和资源控制能力,是 Docker 实现容器化的关键技术。
Namespace
Namespace 通过创建独立的系统资源视图,实现容器进程的环境隔离,确保容器内进程只能访问自身资源,增强安全性和隔离性。
Namespace 机制是 Linux 内核提供的一种隔离机制,它可以将全局的系统资源进行虚拟化。
使得不同的进程组(通常是 Docker 容器)拥有自己独立的资源实例,彼此之间互不干扰。
Docker 利用了以下几种关键的 Namespace:
mnt隔离挂载点和文件系统视图容器挂载根不同uts隔离主机名和域名每个容器自定义 hostnameuser隔离用户与 UID 映射实现 rootless 容器通过这些命名空间,Docker 创建了一个个独立的运行环境,使得容器内的进程仿佛运行在独立的操作系统中,互不干扰。
Cgroups
Cgroups 负责:限制、和管理容器的资源使用,防止资源争抢,保障系统整体稳定和性能。
比如::CPU(核心数、时间片权重)
docker run -it --cpus="1.0" ubuntu意思是这个容器,最多使用 1 个 CPU 核心的计算能力。
内存(最大使用量),比如:
docker run -it --cpu-shares=512 ubuntudocker run -it --device-write-bps /dev/sda:5mb ubuntu网络带宽,比如:
sudo tc qdisc add dev vethXXXX root tbf rate 1mbit burst 32kbit latency 400ms进程数量(PIDs),比如:
docker run -it --pids-limit=100 ubuntu以上
本篇已收于mikechen原创《30万字阿里架构师进阶专题合集》里面。
来源:走在路上会快乐的小傻子