Network Namespace

Network Namespace

  • Network Namespace用来隔离网络设备、ip地址端口等网络栈的Namespace,Network Namespace可以让每个容器拥有自己独立的网络设备,而且容器内的应用可以绑定
    到自己的端口。每个 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|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)
}
os.Exit(-1)
}


  • 如下图所示,Network Namespace与宿主机之间的网络处于隔离状态了。
posted @ 2022-08-07 19:49  一生热爱  阅读(193)  评论(0编辑  收藏  举报