Docker之NameSpace与Cgroup

本文对比了Docker容器技术与传统虚拟化技术,解释了Docker的轻量化优势。接着,介绍了Docker的NameSpace概念,它是如何实现进程隔离,提供半解耦的系统资源。此外,文章还详细阐述了Cgroup的作用,即控制程序对资源的占用,确保容器内服务的资源分配和安全性。通过实例展示了如何限制容器的CPU、内存和磁盘写入速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、docker容器技术与传统虚拟化技术的比较
Docker容器技术是一个与传统的虚拟化技术有些本质上的差别,传统的虚拟化技术,是站硬件物理资源的基础上,虚拟出多个OS,然后在OS的基础上构建相对独立的程序运行环境,而Docker则是在OS的基础上进行虚拟,所以,Docker轻量很多,因此其资源占用、性能消耗相比传统虚拟化都有很大的优势。

docker容器很快,启动和停止可以在秒级实现,比传统的虚拟化技术要快很多,docker核心解决的问题是利用容器来实现类似VM的功能,从而节省更多的硬件资源,docker容器除了运行其中的应用之外,基本不消耗额外的系统资源,从而在保证性能的同时,减小系统开销,同时,它还可以达到“一次封装,到处运行”的目的。

Docker和传统虚拟化的区别如下:
在这里插入图片描述
docker和传统虚拟化的架构上的区别如下:
在这里插入图片描述
二、NameSpace和Cgroup的概念与作用
Docker中有三个核心概念,分别是镜像、容器、仓库。而镜像的概念主要就是把运行环境和业务代码进行镜像打包,每个镜像都会存在多个“层”,镜像层都是只读的,不能往里写数据,如果想要写,就需要在其基础之上启动成一个容器, 在容器层,我们是可写的。

在镜像的多个“层”中,有一个busybox的概念,我将它理解为欺骗层。

虚拟化的技术就是来解决宿主机与虚拟机之间的耦合问题(简称“解耦”),传统虚拟化是属于完全解耦的,而docker是属于半解耦的。关于“耦合、解耦”的概念可以参考文档:什么是耦合、解耦?
1、NameSpace
那么,Docker技术是如何解耦的呢?这就引入了NameSpace的概念,其目的是将某个特定的全局系统资源通过抽象的方法使得NameSpace中的进程看起来拥有他们自己的隔离的全局系统资源实例,Docker技术通过Linux内核实现了六种NameSpace,如下:
在这里插入图片描述
当Docker创建一个容器时,它会创建新的以上六种NameSpace的实例,然后把容器中的所有进程放到这些NameSpace之中,使得容器这个父进程只对自己的子进程有感知,而对于宿主机其他进程一无所知,从

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值