系统调用clone增加 CLONE_NEWNET
用于隔离和网络有关的资源,这就使得每个网络命名空间有其自己的网络设备、IP地址、IP路由表、/proc/net目录、端口号等等
从网络命名空间的角度看,每个container拥有其自己的网络设备(虚拟的)和用于绑定自己网络端口号的应用程序。主机上合适的路由规则可以将网络数据包和特定container相关的网络设备关联。例如,可以有多个web服务器,分别存在不同的container中,这就使得这些web服务器可以在其命名空间中绑定80端口号
命令行 创建一个network space
/var/run/netns
# ip netns add netns1
# ip netns exec netns1 ip link list
# ip netns delete netns1
network device (physical or virtual interfaces, bridges)
virtual network devices
virtual ethernet or veth
created, the lo loopback device
# ip netns exec netns1 ping 127.0.0.1
connect: Network is unreachable
# ip netns exec netns1 ip link set dev lo up
# ip netns exec netns1 ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.051 ms
# ip link add veth0 type veth peer name veth1
# ip link set veth1 netns netns1
# ip netns exec netns1 ifconfig veth1 10.1.1.1/24 up
# ifconfig veth0 10.1.1.2/24 up
# ping 10.1.1.1
# ip netns exec netns1 ping 10.1.1.2
# ip netns exec netns1 route