ip netns命令操作docker容器的网络

原创 2016年08月31日 16:22:52

(1)ip netns相关命令

1.增加虚拟网络命名空间

 
ip netns add ns
   该命令会在/var/run/netns目录下创建ns网络命名空间名


2.显示所有的虚拟网络命名空间

root@wade-ThinkCentre-E73:~# ip netns list
ns

  也可通过查看/var/run/netns目录下的文件来list,结果一样

root@wade-ThinkCentre-E73:~# ls /var/run/netns/
ns
 
3.进入虚拟机网络环境

 ip netns exec ns bash  #打开虚拟网络环境ns的bash窗口
 ip addr #显示所有虚拟网络环境的设备
 exit #退出该网络虚拟环境

 
4.增加一对veth虚拟网卡
 ip link add type veth
 
5.将veth0添加到ns虚拟网络环境
ip link set veth0 netns ns
 
6.将虚拟网卡veth1改名并添加到net1虚拟网络环境中
ip link set dev veth1 name net1-bridge netns net1
 
 
7.设置虚拟网络环境ns的veth0设备处于激活状态
ip netns exec ns ip link set veth0 up
 
8.为虚拟网络环境ns的veth0设备增加IP地址

ip netns exec ns ip address add 10.0.1.1/24 dev veth0


(2)/proc/[pid]/ns文件

从3.8版本的内核开始,用户就可以在/proc/[pid]/ns文件下看到指向不同命名空间(namespace)号的文件,[4026532791]即为namespace号。

root@wade-ThinkCentre-E73:/proc/5787/ns# ll
总用量 0
dr-x--x--x 2 root root 0  8月 31 16:13 ./
dr-xr-xr-x 9 root root 0  8月 31 12:41 ../
lrwxrwxrwx 1 root root 0  8月 31 16:36 ipc -> ipc:[4026532791]
lrwxrwxrwx 1 root root 0  8月 31 16:36 mnt -> mnt:[4026532915]
lrwxrwxrwx 1 root root 0  8月 31 16:13 net -> net:[4026532845]
lrwxrwxrwx 1 root root 0  8月 31 16:36 pid -> pid:[4026532917]
lrwxrwxrwx 1 root root 0  8月 31 16:36 user -> user:[4026531837]
lrwxrwxrwx 1 root root 0  8月 31 16:36 uts -> uts:[4026532916]
如果两个进程指向的namespace编号相同,就说明他们在同一个namespace下。/proc/[pid]/ns的另外一个作用是,一旦文件被打开,只要打开的文件描述符(fd)存在,那么就算PID所属的所有进程都已经结束,创建的namespace就会一直存在。那如何打开文件描述符呢?把/proc/[pid]/ns目录挂载起来或者软链接就可以达到这个效果,命令如下。

挂载
# touch ~/net
# mount --bind /proc/$pid/ns/net ~/net

软链接

#ln -sf /proc/$pid/ns/net "/var/run/netns/${name}"

在使用docker的过程中我们可以使用如下命令达到操作容器的网络的目的

ln -sf /proc/$pid/ns/net "/var/run/netns/${container_name}" //$pid 为docker容器pid

ip netns exec "${container_name}"  `command`

版权声明:本文为博主原创文章,未经博主允许不得转载。

[docker]docker的四种网络方式

声明:本博客欢迎转发,但请保留原作者信息!博客地址:http://blog.csdn.net/halcyonbaby内容系本人学习、研究和总结,如有雷同,实属荣幸!bridge方式(默认)Host I...
  • halcyonbaby
  • halcyonbaby
  • 2014年12月23日 22:51
  • 59400

ip netns 常用的namespace的命令

netns是在linux中提供网络虚拟化的一个项目,使用netns网络空间虚拟化可以在本地虚拟化出多个网络环境,目前netns在lxc容器中被用来为容器提供网络。 使用netns创建的网络空间独立于...
  • ztejiagn
  • ztejiagn
  • 2014年07月03日 14:18
  • 12362

网络名称空间netns的用法

ip命令        linux 的强大的网络配置命令‘ip’。 netns可以让一台机器上模拟多个网络设备,是网络虚拟化的重要组成,将不同类型的网络应用隔离。 一个net namespac...
  • Ghost_leader
  • Ghost_leader
  • 2017年05月02日 20:41
  • 1265

ip netns相关命令

1.增加虚拟网络命名空间   ip netns add net0   2.显示所有的虚拟网络命名空间 EULER:~ # ip netns list net0 也可通过查看/va...
  • tycoon1988
  • tycoon1988
  • 2014年09月04日 16:36
  • 1756

为什么docker创建的网络命名空间在ip netns 不可见

创建docker容器后本来应该有新的命名空间(如果有独立网络的话),那么可以通过 ip netns 命令查看到命名空间,但是实际上却看不到。 查过资料才发现,ip netns 只能查看到 /var/...
  • liuliuzi_hz
  • liuliuzi_hz
  • 2016年06月17日 15:01
  • 1247

如何查看容器的IP地址和网络相关的参数

如何查看容器的IP地址和网络相关的参数?   查看容器的IP地址,可以在主机上运行 sudo Docker ps查看正在运行的容器的id等信息 ”sudo docker ins...
  • lkx94
  • lkx94
  • 2017年01月05日 16:45
  • 362

玩转Linux网络namespace-单机自环测试与策略路由

上周有厂商到公司测试,拿了一块据说很猛的网络处理加速PCIe板卡,拎在手里沉甸甸的很有分量,最让人意淫的是那4个万兆光口,于是我迫不及待的想要一览光口转发时那种看不见的震撼。       可是,仅凭4...
  • dog250
  • dog250
  • 2014年05月18日 14:35
  • 18122

linux IP 命令使用举例

ip1.作用ip是iproute2软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具,例如ifconfig、route等,使用权限为超级用户。几乎所有的Linux发行版本都支持该命令...
  • radkitty
  • radkitty
  • 2008年10月06日 15:01
  • 23349

ip介绍

ip是iproute2软件包里面的一个强大的网络配置工具,本文将介绍ip命令及其选项。 Ip命令的语法: ip [OPTIONS] OBJECT [COMMAND [ARGUMENTS]] ...
  • Michaelwubo
  • Michaelwubo
  • 2015年09月15日 11:33
  • 3569

Linux进程简介

在一台服务器上面看到有如下这么多类似的进程:     2 root      20   0     0    0    0 S    0  0.0   0:00.00 kthreadd       ...
  • fenglibing
  • fenglibing
  • 2011年11月11日 10:11
  • 19511
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ip netns命令操作docker容器的网络
举报原因:
原因补充:

(最多只允许输入30个字)