Docker容器底层原理
如果虚拟机内服务对内核版本有要求(如:需用到低于3.10的内核版本),这个服务就不太适合用docker来实现了,因为docker只适合内核版本大于3.10的系统上
Busybox:欺骗层(模拟不同系统的根目录)
耦合:冲突现象(例如:部署两台Nginx)
↓
解耦:解除耦合、冲突
↓
解耦的方法:
- 普通虚拟化:完全型解耦
- Docker:半解耦

图解:
中间的小人代表的是普通的用户,下边是电脑底层组成(宿主机),在硬件的基础之上在部署系统。我们用户、管理员通过shell终端和计算机进行交互,系统在去调用所需要的驱动程序、函数……,函数在去调动设备文件,最后返回给用户,这是单个程序的一个流程。
如果想在服务器上部署两个Nginx服务,两个Nginx都会占用80端口,怎么办?——往下看
- 普通虚拟化-完全型解耦:
可以通过虚拟化(VMware、KVM)的手段来解决,正上图左上所示,模拟出所需的硬件资源(CPU、MEM、DISK……)上运行,以防两 Nginx 的相互冲突,互不影响,但是对资源的消耗太浪费啦(如:1G内存、1个cpu、*磁盘),如果你的电脑8G内存的话,最多也就能开4~5台虚拟机,本机还需要留一定的空间。这就是完全虚拟化也叫完全解耦。- Docker-半解耦:
理念:两个Nginx相互隔离开,两台Nginx如果需要解耦,就去解耦,如果不需要就不解耦,例如kernel就不需要解耦,docker直接去调用宿主机的kernel,这也就是在仓库下载的 centos:7 镜像只有200多M的原因啦。没有冲突的地方直接调用宿主机的资源(例如:CPU、MEM、DISK、yum源……),到底隔离了什么哪?——>Namespace了解详情。容器直接调用宿主机的资源也就意味着单台故障可能占用整个宿主机的资源,可以通过资源的限制来控制。
Namespace(名称空间)
原理:逻辑空间——> 隔离
作用:用来隔离容器
/proc /sys : 虚拟文件系统。 伪目录文件 ——> 内存
[root@docker01 ns]# pwd
/proc/1899/ns
Docker容器底层解析

本文深入探讨Docker容器技术的底层实现原理,包括其对内核版本的要求、解耦概念、资源隔离机制如Namespace和Cgroup,以及如何通过参数限制容器的资源使用。
最低0.47元/天 解锁文章
1529

被折叠的 条评论
为什么被折叠?



