Linux Namespace

 

1. 有哪些类型

  • Mount: 隔离文件系统挂载点
  • UTS: 隔离主机名和域名信息
  • IPC: 隔离进程间通信
  • PID: 隔离进程的ID
  • Network: 隔离网络资源
  • User: 隔离用户和用户组的ID

查看特定进程的namespace 信息:

/proc/$pid/ns/

 

 

 查看特定进程mount space 信息

cat /proc/$pid/mountinfo

 
 
 

namespace 主要有3个系统调用:

  • clone()– 实现线程的系统调用,用来创建一个新的进程,并可以通过上述参数达到隔离。
  • unshare() – 使某进程脱离某个namespace,并且会自动创建一个新的namespace
  • setns() – 把某进程加入到某个namespace


ref:

https://zhuanlan.zhihu.com/p/73248894

一文搞懂 Linux network namespace 

 

2. 有什么用?

最典型的应用就是比如docker 这种容器技术

 

Ref:

https://www.cnblogs.com/wtzbk/p/15077185.html

 

3. 常见的使用场景有哪些?

加入想在container 内部使用某个网络相关的command, 但是发现没有这个command, 怎么办?马上可能想到安装一个吧,但是加入container 又是read-only 的怎么办?其实一个比较快的办法是用在host上找到 net space, 然后用 host 上的对应命令

e.g.

ip netns exec {namespace} ifconfig

 

posted @ 2022-10-16 20:21  mashuai_191  阅读(84)  评论(0编辑  收藏  举报