手写Docker之认识NameSpace、CGroups、Union file system

简介: 手写Docker之认识NameSpace、CGroups、Union file system

关于NameSpace

Linux NameSpace主要是kernel中用于隔离系统资源的功能,而docker就是基于NameSpace去隔离系统资源达到容器化的效果


以下案例均以该代码进行举例:

package main

import (
    "fmt"
    "os"
    "os/exec"
    "syscall"
)

func  main()  {
   
   
    cmd:=exec.Command("sh")
    cmd.SysProcAttr=&syscall.SysProcAttr{
   
   
    Cloneflags: syscall.CLONE_NEWUTS |syscall.CLONE_NEWIPC|
    syscall.CLONE_NEWPID|syscall.CLONE_NEWNS|syscall.CLONE_NEWUSER|syscall.CLONE_NEWNET,
    }

    cmd.Stdin=os.Stdin
    cmd.Stdout=os.Stdout
    cmd.Stderr=os.Stderr
    if err:=cmd.Run();err!=nil{
   
   
        fmt.Print(err)
        return
    }
    os.Exit(-1)
}

NameSpace主要包括......

UTS NameSpace:主要用于隔离nodeName、domainName。让每个NameSpace有自己的hostname

例如上面例子中cloneflage添加了newUTS,那么在运行程序中重新设置hostname在程序外并未受影响:
在这里插入图片描述
在这里插入图片描述


IPC NameSpace:用于隔离System V IPC、POSIX message queues(都是一种用于进程间通信(IPC)的机制,常用于不同进程之间共享数据或信号量。如消息队列、信号量、共享内存),例如上面例子中cloneflage添加了NEWIPC

在这里插入图片描述
在这里插入图片描述
举一反三
PID NameSpace:隔离进程ID、(NEWPID)
Mount NameSpace:用于隔离挂载点视图,也即是说可以将目录比纳城根节点、但作用不仅限于此(NEWNS)
User NameSpace:隔离用户组ID(NEWUSER)

NetWork NameSpace:隔离网络设备、ip、port等

相关文章
|
8月前
|
存储 网络协议 Linux
深入剖析docker核心技术(namespace、cgroups、union fs、网络)(二)
深入剖析docker核心技术(namespace、cgroups、union fs、网络)(二)
118 0
|
8月前
|
Linux 调度 虚拟化
深入剖析docker核心技术(namespace、cgroups、union fs、网络)(一)
深入剖析docker核心技术(namespace、cgroups、union fs、网络)(一)
309 0
|
资源调度 Linux Shell
docker-资源限制:如何通过 Cgroups 机制实现资源限制?
我们知道使用不同的 Namespace,可以实现容器中的进程看不到别的容器的资源,但是有一个问题你是否注意到?
227 0
|
XML 消息中间件 Unix
【Docker】LXC所实现的隔离性、Linux Namespace等讲解
【Docker】LXC所实现的隔离性、Linux Namespace等讲解
|
Cloud Native Docker 容器
【云原生Docker系列第四篇】Docker Cgroups资源控制操作(人人都喜欢森林,却都不想去种树)(二)
【云原生Docker系列第四篇】Docker Cgroups资源控制操作(人人都喜欢森林,却都不想去种树)(二)
134 0
【云原生Docker系列第四篇】Docker Cgroups资源控制操作(人人都喜欢森林,却都不想去种树)(二)
|
Cloud Native Linux 调度
【云原生Docker系列第四篇】Docker Cgroups资源控制操作(人人都喜欢森林,却都不想去种树)(一)
【云原生Docker系列第四篇】Docker Cgroups资源控制操作(人人都喜欢森林,却都不想去种树)(一)
146 0
【云原生Docker系列第四篇】Docker Cgroups资源控制操作(人人都喜欢森林,却都不想去种树)(一)
|
Linux 应用服务中间件 nginx
Docker资源限制与Cgroups
Docker资源限制与Cgroups 一、Linux control groups 简介      Linux CGroup全称Linux Control Group, 是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU、内存、磁盘输入输出等)。
2610 0