Docker network namespace

一:Linux namespace



Linux内核实现namespace的一个主要目的,就是实现轻量级虚拟化(容器)服务。在同一个namespace下的进程可以感知彼此的变化,而对外界的进程一无所知,仿佛置身于一个独立的系统环境中,以达到独立和隔离的目的。

 

二:network namespace

Network namespace主要提供了关于网络资源的隔离,包括网络设备,IPv4IPv6协议栈,IP路由表,防火墙,/proc/net目录,/sys/class/net目录,套接字(socket)等。一个物理的网络设备最多存在于一个network namespace中,可以通过创建veth pair(虚拟网络设备对:有两端,类似管道,如果数据从一端传入另一端也能接收到,反之依然)在不同的network namespace间创建通道,以达到通信目的。

一般情况下,物理网络设备都分配在最初的root namespace(系统默认的namespace)中,但是如果有多块物流网卡,也可以把其中一块或多块分配给新创建的network namespace.

当说到network namespace时,指的是把网络独立出来,给外部用户一种透明的感觉,仿佛在与一个独立网络实体进行通信。 容器的经典做法就是创建一个veth pair,一端放置在新的namespace中,通常命名为eth0;一端放在原先的namespace中连接物理网络设备,再通过把多个设备接入网桥或者进行路由转发,来实现通信的目的。

三:ip netns命令


1. 创建一个network namespace

ip netns add nstest

2. 列出系统中已存在的network namespace

Ip netns list

3. 删除一个network namespace

Ip netns delete nstest

4. network namespace中执行一条命令:ip netns exec

如:ip netns exec nstest ip addr

5. 启动network namespace中的回环设备

ip netns exec nstest ip link set dev lo up

6. 在主机上创建两张虚拟网卡veth-aveth-b

ip link add veth-a type veth peer name veth-b

7. veth-b设备添加到nstest这个network namespace中,veth-a留在主机中。

ip link set veth-b netns nstest  此时nstest就有了两块网卡lo和veth-b



8.  在主机上为veth-a配置IP并启动

ip addr add 10.0.0.1/24 dev veth-a

ip link set dev veth-a up

9.  nstest中的veth-b配置IP并启动

ip netns exec nstest ip addr add 10.0.0.2/24 dev veth-b

ip netns exec nstest ip link set dev veth-b up

10.  在主机中查看路由: ip route


11.nstest中查看路由信息:ip netns exec nstest ip route

这两条路由表明的意义是目的地址为10.0.0.0/24网络的IP分别从veth-aveth-b发出。

12.  测试连通性:现在nstest这个network namespace有了自己的网卡,IP地址,路由表等信息:

Ping 10.0.0.2


ip netns exec nstest ping 10.0.0.1


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28624388/viewspace-2146319/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28624388/viewspace-2146319/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值