1.namespace的作用
传统的Linux的许多资源是全局的,比如进程ID资源。而namespace的目的就是将这些资源做资源隔离。
2.通过代码看具体对哪些资源进行了隔离
//nsproxy.h
struct nsproxy{
atomic_t count;
struct uts_namespace *uts_ns;
struct ipc_namespace *ipc_ns;
struct mnt_namespace *mnt_ns;
struct pid_namespace *pid_ns;
struct user_namespace *user_ns;
struct net *net_ns;
};
含义如下:
每个 namespace 里面将原本是全局资源的进行了隔离,彼此互相不可见
同时在 Linux Host 或者 VM 中, 当然 会有一套相关的资源
单纯从网络的视角来看,一个 namespace 提供了一份独 的网络协议栈(网络设备接
口、 IPv4、IPv6 IP 路由、防火墙规则、 sockets 等) 。一个设备( Linux Device )只能位于一个namespace 中,不同 namespace 中的设备可以利用 veth pair 进行桥接