从零自制docker-5-【USER Namespace NETWORK Namespace】

USER Namespace

即进程运行在一个新的namespace中,且该namespace中的User ID和Group IDA在该namespace内外可以不同,可以实现在namspace的用户是root但是对应到宿主机并不是root

Cloneflags增加一个syscall.CLONE_NEWUSER即可
在这里插入图片描述

代码

package main

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

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

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

NETWORK Namespace

Network Namespace 是用来隔离网络设备、 IP 地址端口 等网络械的 Namespace

即进程在namespace中拥有独立的(虚拟的)网络设备。并且。在宿主机上搭建网桥后,就能很方便地实现容器之间的通信,而且不同容器上的应用可以使用相同的端口

Cloneflags增加syscall.CLONE_ NEWNET即可

发现在network namespace的进程没有网络设备(可能默认就是没有,需要相关初始化),宿主机依然存在网络设备
在这里插入图片描述

代码块

package main

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

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

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

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-26 10:54:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-26 10:54:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-26 10:54:04       82 阅读
  4. Python语言-面向对象

    2024-03-26 10:54:04       91 阅读

热门阅读

  1. 【笔记】Hbase基础笔记

    2024-03-26 10:54:04       44 阅读
  2. qt5-入门-容器类

    2024-03-26 10:54:04       40 阅读
  3. 计算机视觉的研究方向

    2024-03-26 10:54:04       44 阅读
  4. 2024.3.25

    2024-03-26 10:54:04       35 阅读
  5. C语言随记——八道C语言简单算法题

    2024-03-26 10:54:04       39 阅读
  6. HTML快速入门笔记

    2024-03-26 10:54:04       38 阅读
  7. OpenCV图像像素值统计

    2024-03-26 10:54:04       41 阅读
  8. 智慧商场数字化创新需要有数字能力帮手

    2024-03-26 10:54:04       42 阅读
  9. flutter路由跳转

    2024-03-26 10:54:04       40 阅读
  10. 3月25日,每日信息差

    2024-03-26 10:54:04       44 阅读
  11. P5740 【深基7.例9】最厉害的学生

    2024-03-26 10:54:04       43 阅读
  12. 3544: 【C1】【基础】输出小数部分

    2024-03-26 10:54:04       36 阅读
  13. 九、Spring源码学习之initApplicationEventMulticaster方法

    2024-03-26 10:54:04       41 阅读
  14. AI:133-基于深度学习的工业质检自动化

    2024-03-26 10:54:04       44 阅读