手写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)
}
AI 代码解读

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等

目录
打赏
0
0
0
0
2
分享
相关文章
Docker核心技术:Docker原理之Namespace
通过以上内容,您可以深入了解Docker中的Namespace机制及其在资源隔离中的应用,从而更好地理解和应用Docker技术。
99 25
深入剖析docker核心技术(namespace、cgroups、union fs、网络)(二)
深入剖析docker核心技术(namespace、cgroups、union fs、网络)(二)
140 0
|
11月前
|
深入剖析docker核心技术(namespace、cgroups、union fs、网络)(一)
深入剖析docker核心技术(namespace、cgroups、union fs、网络)(一)
367 0
docker-资源限制:如何通过 Cgroups 机制实现资源限制?
我们知道使用不同的 Namespace,可以实现容器中的进程看不到别的容器的资源,但是有一个问题你是否注意到?
272 0
【云原生Docker系列第四篇】Docker Cgroups资源控制操作(人人都喜欢森林,却都不想去种树)(二)
【云原生Docker系列第四篇】Docker Cgroups资源控制操作(人人都喜欢森林,却都不想去种树)(二)
147 0
【云原生Docker系列第四篇】Docker Cgroups资源控制操作(人人都喜欢森林,却都不想去种树)(二)
【云原生Docker系列第四篇】Docker Cgroups资源控制操作(人人都喜欢森林,却都不想去种树)(一)
【云原生Docker系列第四篇】Docker Cgroups资源控制操作(人人都喜欢森林,却都不想去种树)(一)
160 0
【云原生Docker系列第四篇】Docker Cgroups资源控制操作(人人都喜欢森林,却都不想去种树)(一)
Docker资源限制与Cgroups
Docker资源限制与Cgroups 一、Linux control groups 简介      Linux CGroup全称Linux Control Group, 是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU、内存、磁盘输入输出等)。
2639 0