CentOS6.6使用ip netns(网络namespace)

在docker使用的过程中如果要自定义容器的网络设备(主要是指定IP地址),就要用到网络namespace(可以理解为进程级别的网络设备),关于namespace介绍可以查阅其它相关质料。centos默认安装的iproute包是不支持网络namespace操作的,使用ip netns会出现类似这样的报错:

1
Object "netns" is unknown, try "ip help".

谷歌度娘了一番,解决的方法都是升级内核和升级指定的iproute包。其实内核是不用的升级的,centos6.6版本的内核支持网络namespace操作的。只需要升级iproute包即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 安装yum源
$ yum install -y http://rdo.fedorapeople.org/rdo-release.rpm
# 修改yum的地址,网上提供的地址目前是无效的,貌似地址目前已经变成下面这个了
$ cat /etc/yum.repos.d/rdo-release.repo
[openstack-juno]
name=OpenStack Juno Repository
baseurl=http://repos.fedorapeople.org/repos/openstack/openstack-icehouse/epel-6/
enabled=1
skip_if_unavailable=0
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-Juno
$
# 安装指定yum源的iproute包
$yum --enablerepo=openstack-juno install iproute

centos6.6只要升级指定的iproute包即可,不用升级内核。centos6其它版本的没有测试,未知。
后来源的地址改变,目录改变了,具体baseurl变成了
https://repos.fedorapeople.org/repos/openstack/EOL/openstack-icehouse/epel-6/。

----------------本文结束 感谢阅读----------------