0
点赞
收藏
分享

微信扫一扫

Docker与Linux Namespace:Mount Namesapce

烟中雯城 2021-09-24 阅读 49
PaaS

概述

mount namespace 是用来隔离各个进程看到的挂载点视图。
与chroot()将某一个子目录变成根节点类似,mount namespace以更加灵活和安全的方式实现。

源码

package main

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

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

    if err := cmd.Run(); err != nil {
        log.Fatal(err)
    }
}

测试

查看一下/proc的文件内容。proc 是一个文件系统,它提供额外的机制可以从内核和内核模块将信息发送给进程。

go run mount.go
//宿主机proc
sh-4.2# ls /proc
1      15232  17505  229    3    5     8375  buddyinfo  execdomains  key-users   mtrr          swaps          zoneinfo
10     15235  17524  230    30   5092  863   bus        fb           kmsg        net           sys
11074  15487  18     234    327  5093  875   cgroups    filesystems  kpagecount  pagetypeinfo  sysrq-trigger
11077  15758  19     241    350  512   9     cmdline    fs           kpageflags  partitions    sysvipc
12120  16     2      253    357  516   930   consoles   interrupts   loadavg     sched_debug   timer_list
12123  16003  20     254    38   520   935   cpuinfo    iomem        locks       schedstat     timer_stats
13     16151  21     27     40   525   936   crypto     ioports      mdstat      scsi          tty
14     16173  2213   28     41   56    9424  devices    irq          meminfo     self          uptime
14885  16177  223    29     42   7     9427  diskstats  kallsyms     misc        slabinfo      version
14888  16185  227    29202  43   796   99    dma        kcore        modules     softirqs      vmallocinfo
15     17     228    29710  490  8     acpi  driver     keys         mounts      stat          vmstat


//将/proc mount到我们自己的namesapce
sh-4.2# mount -t proc proc /proc
sh-4.2# ls /proc
1          cmdline    dma          interrupts  keys        locks    mtrr          scsi      sys            uptime
4          consoles   driver       iomem       key-users   mdstat   net           self      sysrq-trigger  version
acpi       cpuinfo    execdomains  ioports     kmsg        meminfo  pagetypeinfo  slabinfo  sysvipc        vmallocinfo
buddyinfo  crypto     fb           irq         kpagecount  misc     partitions    softirqs  timer_list     vmstat
bus        devices    filesystems  kallsyms    kpageflags  modules  sched_debug   stat      timer_stats    zoneinfo
cgroups    diskstats  fs           kcore       loadavg     mounts   schedstat     swaps     tty

//使用 ps 来查看系统的进程
sh-4.2# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 18:10 pts/4    00:00:00 sh
root         6     1  0 18:11 pts/4    00:00:00 ps -ef

举报

相关推荐

0 条评论