docker容器核心技术点

本文深入探讨Docker容器技术的核心原理,包括通过Cgroups和Namespace技术实现资源限制和进程隔离,以及如何通过chroot切换根目录,创建独立的运行环境。详细解释了rootfs的作用,以及Docker镜像的层概念,包括只读层、可读写层和init层的特性。

docker容器核心技术点:

容器其实本质上就是一个进程,只不过容器的进程是比较特殊的。
容器技术的核心功能,就是通过约束和修改进程的动态表现,创造出一个“边界”,通过“障眼法”让人觉得它是一个独立的系统。大多数容器都是使用 Cgroups 技术来约束进程,通过 Namespace 技术来修改进程的视图。
Namespace 其实是在创建新进程时候加了一个可选参数,它利用 Linux 的系统调用 clone() 为新创建的进程指定一个 CLONE_NEWPID 的参数,那么新创建的进程就会看到一个全新的进程空间,在这个进程空间里面它的 PID 就是 1。
Namespace 除了可以模拟 PID 之外,还提供了 Mout、UTS、IPC、Network 和 User 等,在不同的进程上下文做隔离操作。
Cgroups 是Linux内核提供的一种可以限制单个进程或者多个进程所使用资源的机制,全称是 control groups,可以对 CPU、内存等资源实现精细化的控制。

容器最核心的原理实际上就是为用户创建进程,然后启动 Linux 的 Namespace 和配置 Cgroup 参数为用户创建了一个隔离环境。

但我们是在一个完全与宿主机不同的目录结构当作,这其实是容器通过 chroot 切换了进程的根目录来实现的
rootfs模拟了一个独立的系统根目录环境

引入了层的概念,即用户在制作镜像时的每一步操作都会生成一个层,也就是增量的 rootfs
Docker 镜像的层分为只读层、可读写层和 init 层
1、只读层包含了整个底层操作系统所必须的一些目录和依赖
2、可读写层没写入文件之前,这个目录是空的。而一旦有了写操作,修改的内容就会以增量的方式出现在这层中
3、init 层用来存放一些例如 /etc/hosts、/etc/resolv.conf等信息
最后这些层被合并为一个目录下,组成了一个完整的操作系统供容器使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值