上次学习了网络命名空间,那么如何进入容器的命名空间呢?

运行的容器都对应一个PID,每个PID都有自己的命名空间。在/proc/[pid]/ns目录下包含该进程所属的 namespace信息。

首先namespace文件都是链接文件。链接文件的内容格式为xxx:[inode number]。其中的xxx为namespace的类型,inode number则用来标识一个namespace。如果两个进程的某个namespace文件指向同一个链接文件,说明相关资源在同一个namespace中,比如同一个pod中容器的net命名空间是同一个,即使1个pod一个容器,在pod运行主机上docker ps可以看到2个容器,这两个容器是同一net命名空间,这是k8s pod的特色。

其次/proc/[pid]/ns 里放置这些链接文件的另外一个作用是,一旦这些链接文件被打开,只要打开的文件描述符(fd)存在,那么该namespace下的所有进程都已结束,这个namespace也会一直存在,后续的进程可以复用。问题来了,怎么向容器中添加一个网卡或者删除一个网卡呢?

网络命名空间一文中看很简单,ip netns show查到一台主机上的网络命名空间, ip link set  {网卡名字}  netns  {网络命名空间}执行下即可。网卡名字可以是主机上的网卡名字,也可以是虚拟出来的网卡名字(如veth设备)。

但事实上linux下的网络命名空间除了/proc/[pid]/ns下的,用命令根本查不到。这是为什么呢?

原来是Linux下默认(包括docker,docker容器也是一个pid)把创建的网络命名空间链接文件隐藏起来了,导致ip netns命令无法读取。

恢复任意pid的netns

获取容器的进程号:docker inspect 容器名称 | grep Pid 或者docker inspect -f '{{.State.Pid}} 容器id或容器名称

将进程网络命名空间恢复到主机目录:ln -s  /proc/{Pid}/ns/net  /var/run/netns/某容器的命名空间,这里的容器命名空间的名字自己任意定义,只是做个软链接。如果/var/run/netns目录不存在,以root用户手动创建目录。

然后执行ip netns命令查看看该容器的网络命名空间。

ip link set {网卡名字} netns {网络命名空间}

网络命名空间为容器的则为容器添加网卡(记得手工和配置ip)。

从网络命名空间test01中删除一个网卡eth0到另一个网络命令空间test02:

ip netns exec test01 ip link set eth0 netns test02

从网络命名空间test01中删除一个网卡eth0到Linux上默认的网络命令空间:

ip netns exec test01 ip link set eth0 netns $$

ip netns exec test01 ip link set eth0 netns {Linux主机上某pid,以父进程id 1为例}

ps:不实践不知道,原来Linux主机上默认的网络命名空间不是default和global,预测是要做软连接的。还好ip link set {网卡名字} netns {网络命名空间},这其中的网络命名空间可以指定pid即可。

删除软连接:rm -rf  /var/run/netns/某容器的命名空间

实际操作中一点感悟:原本通过eth0的ip ssh登录着,将Linux主机上的eth0网卡设置加入自己创建的一个网络命名空间后,ssh登录断开了。回想起来,ssh进程和Linux主机网卡eth0在同一个网络命名空间下,当将网卡命名空间换了后,Linux主机上就看不到这个网卡了,网络就不通了。

再抛出个问题:为何Linux下网络命名空间被隐藏了?

命名空间都有有一个inode节点,相对来说隐藏起来不会误删除。

查询命名空间的使用场景比较少,一般谁去查命名空间呢。

也有可能先有命名空间,后有的ip netns。

ip netns show查命名空间从/var/run/netns/这个目录下读取的,pid下的网络命名空间可以是相同的,65536个pid的网络命名空间个数不定,如果ip netns show一个一个递归去查,有可能比较慢。参考

linux删除docker0网卡,给网络命名空间增加或删除网卡(容器通用)相关推荐

  1. mysql 删除创建表分区_创建,增加,删除mysql表分区

    1.测试添加分区和删除分区 ###添加删除range分区 (1)创建一个分区: CREATE TABLE titles ( emp_no      INT NOT NULL, title        ...

  2. 计算机一级考试ppt知识点,2020年计算机一级MsOffice考试考点解析:增加和删除幻灯片...

    [导语]2020年计算机一级考试备考模式已开启,为了方便考生及时有效的备考,下面无忧考网为您精心整理了2020年计算机一级MsOffice考试考点解析:增加和删除幻灯片,供大家的关注.如想获取更多计算 ...

  3. 一级计算机基础演示文稿,计算机一级计算机基础及MSOffice应用辅导:在演示文稿中增加和删除幻灯片...

    在演示文稿中增加和删除幻灯片 通常,演示文稿由多张幻灯片组成,创建空白演示文稿时,自动生成一张空白幻灯片,当一张幻灯片编辑完成后,还需要继续制作下一张幻灯片,此时需要增加新幻灯片.在已经存在的演示文稿 ...

  4. Linux 网络命名空间

    虚拟网络基础 bridge TAP 设备与 VETH 设备 netns 网络命名空间 虚拟网络创建 iproute2 创建新的网络命名空间 显示所有的虚拟网络命名空间 进入虚拟网络环境 设置虚拟网络环 ...

  5. linux中的网络命名空间的使用

    背景 项目中使用了网络命名空间,用来隔离不同空间中的应用. 命名空间的使用,类似虚拟化技术,在同一台物理机上,创建的多个命名空间相互独立,各个空间的进程独立运行,互不干扰. 在此作一总结,学习加深理解 ...

  6. linux网络命名空间详解,Linux Network Namespace (netns) 详解

    Linux Network Namespace (netns) 详解 Network Namespace (以下简称netns)是Linux内核提供的一项实现网络隔离的功能,它能隔离多个不同的网络空间 ...

  7. linux网络命名空间详解,『中级篇』 Linux网络命名空间(25)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』 Linux网络命名空间(25) docker底层技术,非常重要的关于namespace,network的names ...

  8. Linux 命令之 ifconfig -- 配置和显示网卡的网络参数

    文章目录 一.命令介绍 二.常用选项 三.参考示例 (一)显示网络设备信息(激活状态的) (二)启动关闭指定网卡 (三)显示所有配置的网络接口,不论其是否激活 (四)显示第一个物理以太网卡 eth0 ...

  9. python做一个linux网卡,Linux系统Python可以选择不同网卡进行网络访问吗?

    是这样的,我有一台远程的Linux服务器(Debian系统),上面有两块网卡,同样的IP. 我现在需要选择第二块网卡,因为这块网卡连上了CMCC的专线,可以进行一些CMCC的业务操作.但是默认的使用的 ...

最新文章

  1. python中if elif语句优化_python – 最有效的方式做一个if-elif-elif-else语句当else做的最多?...
  2. 基于 HTML5 Canvas 的交互式地铁线路图
  3. GPIO几种配置的作用
  4. boost::pfr模块ops相关的测试程序
  5. php - preg_match
  6. [css] 使用css实现霓虹灯效果
  7. redis创建像mysql表结构_Redis数据结构列表实现
  8. 甘肃民族师范学院计算机科学系,甘肃民族师范学院计算机科学与技术专业2016年在甘肃理科高考录取最低分数线...
  9. 蔚来ES8正式交付售价46.8万元起 与Model系相比扛打吗?
  10. 深入理解全局编录服务器GC
  11. Linux oracle中文乱码的问题解决
  12. “bim”技术助力“智慧城市”建设
  13. 在MongoDB中实现聚合函数
  14. 数据库关键字搜索查询html,在所有数据库中搜索关键字
  15. 阿里ai布局开始_如何从AI开始?
  16. 中国专利申请CPC客户端软件问题解决方案
  17. 会声会影 html5,一文了解会声会影哪个版本比较好用
  18. 机器学习基础知识之概率论基础详解
  19. 百度、谷歌、亚马逊、微软神同步:被盯上的智能语音排位赛
  20. C#通过fleck实现wss协议的WebSocket多人Web实时聊天(附源码)

热门文章

  1. 云南直面环保难题 守护蓝天碧水净土
  2. 精通 MEAN: MEAN 堆栈
  3. 联邦学习FATE框架安装搭建 - CentOS8
  4. 总结octet与byte的区别
  5. python PIL库将图片转换成字符画
  6. robots机器人疾风 war_不正经评测之:《战争机器人War Robots》
  7. 专利4:专利的法律状态
  8. unity 彩带粒子_Unity3D_(Shuriken粒子系统)制作简单的烟花爆炸效果
  9. 【时间序列】单变量时间序列平滑方法介绍
  10. 取消“打开文件-安全警告”的方法