创建docker容器后本来应该有新的命名空间(如果有独立网络的话),那么可以通过 ip netns 命令查看到命名空间,但是实际上却看不到。
查过资料才发现,ip netns 只能查看到/var/run/netns
下面的网络命名空间。docker 不像openstack neutron 会自动在这个文件创建命名空间名字,需要手动创建。
创建方法是:
pid=`docker inspect -f '{{.State.Pid}}' $container_id`
ln -s /proc/$pid/ns/net /var/run/netns/$container_id
通过ip netns list
查看网络 namespace
通过ip netns exec 39714 bash
在该网络namespace下执行命令