docker 原理记录

docker 原理记录

1,linux namespace

定义进程范围

2,cgroup

定义资源

// +build linux package main import ( “log” “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, //内核3.9后版本 UidMappings: []syscall.SysProcIDMap{ { ContainerID: 1, HostID: 1, Size: 1, }, }, GidMappings: []syscall.SysProcIDMap{ { ContainerID: 1, HostID: 1, Size: 1, }, }, } //内核 3.9后不能用 //cmd.SysProcAttr.Credential = &syscall.Credential{Uid: uint32(1), Gid: uint32(1)} cmd.Stdin = os.Stdin cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr if err := cmd.Run(); err != nil { log.Fatal(err) } os.Exit(-1) }

linux proc文件系统
linux 下的 /proc文件系统是内核提供的。它不是一个真正的文件系统,只包含了系统运行时的信息。只存在于内存中,不存在于外存空间中。它以文件系统形式存在,为访问内核数据的操作提供接口。

 

发表评论