docker之底层原理

docker底层使用linux的四个技术,chroot,namespace,cgroup,OverlayFs

一、chroot

chroot:改变某进程的根目录,使程序不能访问该目录之外的其他目录

二、namespace

Namespace: 是linux系统提供的一种资源隔离机制,使容器中的进程都可以在单独的命名空间中运行,并且只可以访问当前命名空间中的资源。Namespace 可以隔离进程 ID、主机名、用户 ID、文件名、网络访问和进程间通信等相关资源。

Linux Namespace是Linux系统提供的一种资源隔离机制,可实现系统资源隔离的列表如下:

    IPC:
        用于隔离进程间通信。
    MNT:
        用于隔离文件系统和提供硬盘挂载点。
    NET:
        用于隔离网络。
    PID:
        用于隔离进程ID。
    User:
        用于隔离用户和用户组。
    UTS:
        用于隔离HostName和DomianName。

三、cgroup

cgroup是Linux内核的一个功能,用来限制和隔离进程的资源使用情况,比如CPU、内存、磁盘I/O、网络等。

Linux系统中能够控制的资源列表
  cpu:
     主要限制进程的cpu使用率。
 cpuacct:
     可以统计cgroups中的进程的cpu使用报告。
 cpuset:
     可以为cgroups中的进程分配单独的cpu节点或者内存节点。
 memory:
     可以限制进程的memory使用量。
 blkio:
     可以限制进程的块设备io。
 devices:
     可以控制进程能够访问某些设备。
 net_cls:
     可以标记cgroups中进程的网络数据包,然后可以使用tc模块(traffic control)对数据包进行控制。
 net_prio:
     这个子系统用来设计网络流量的优先级
 freezer:
     可以挂起或者恢复cgroups中的进程。
 ns:
     可以使不同cgroups下面的进程使用不同的namespace
 hugetlb:
     这个子系统主要针对于HugeTLB系统进行限制,这是一个大页文件系统。

四、OverlayFs

OverlayFs:是一种堆叠文件系统,它依赖并建立在其他文件系统之上(ext4、xfs),并不直接参与磁盘空间结构划分,将原来系统文件中的文件或目录合并在一起,最后向用户展示的文件是在同一级的目录,这就是联合挂载技术。

 Linux内核为Docker提供的OverlayFS驱动有两种:Overlay和Overlay2。而Overlay2是相对于Overlay的一种改进,在Inode利用率方面比Overlay更有效。    

OverlayFS实现方式:
    OverlayFS通过三个目录:lower目录、upper目录、以及work目录实现。
    lower:
         一般对应的是只读数据。
     upper:
         可以进行读写操作的目录。
     work:
         目录为工作基础目录,挂载后会自动创建一个work子目录(实际测试手动卸载后该目录并不会被删除)
         该目录主要是存储一些临时存放的结果或中间数据的工作目录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liux3528

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值