网络命名空间
Linux的Namespace(命名空间)技术是一种隔离技术,常用的Namespace有 user namespace, process namespace, network namespace等 在Docker容器中,不同的容器通过Network namespace进行了隔离,也就是不同的容器有各自的IP地址,路由表等,互不影响。:::info
准备一台Linux机器,会用到一个叫 brtcl 的命令,这个命令需要安装,如果是Ubuntu的系统,可以通过 apt-get install bridge-utils 安装;如果是Centos系统,可以通过 sudo yum install bridge-utils 来安装:::

创建bridge
sudo brctl addbr mydocker0brctl show
准备一个shell脚本
脚本名字叫 add-ns-to-br.sh
#!/bin/bash# 定义三个传入的变量bridge=$1namespace=$2addr=$3# 网线名vethA=veth-$namespacevethB=eth00-$namespace# 创建 $namespace 网络空间sudo ip netns add $namespace# 连接 $vethA 和 $vethBsudo ip link add $vethA type veth peer name $vethB# $vethB 放入到 $namespacesudo ip link set $vethB netns $namespace# 配置 $vethB ip地址sudo ip netns exec $namespace ip addr add $addr dev $vethB# $vethB 开启sudo ip netns exec $namespace ip link set $vethB up# $vethA 开启sudo ip link set $vethA up# $vethA 添加到 $bridgesudo brctl addif $bridge $vethA
脚本执行
把mydocker0这个bridge up起来
sh add-ns-to-br.sh mydocker0 ns1 172.16.1.1/16sh add-ns-to-br.sh mydocker0 ns2 172.16.1.2/16
sudo ip link set dev mydocker0 up
验证
sudo ip netns listsudo ip netns exec ns1 baship a
