加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

容器核心技术–Namespace

发布时间:2023-06-05 13:01:01 所属栏目:教程 来源:
导读:简单来说,Namespace 可以为容器提供系统资源隔离能力。

当然,这样讲过于笼统,我们来举个例子:假如一个容器中的进程需要使用 root 权限,出于安全考虑,我们不可能把宿主机的 root 权限给他。但是通过 Namespa
简单来说,Namespace 可以为容器提供系统资源隔离能力。

当然,这样讲过于笼统,我们来举个例子:假如一个容器中的进程需要使用 root 权限,出于安全考虑,我们不可能把宿主机的 root 权限给他。但是通过 Namespace 机制,我们可以隔离宿主机与容器的真实用户资源,谎称一个普通用户就是 root,骗过这个程序。从这个角度看,Namespace 就是内核对进程说谎的机制,目前(Linux最新的稳定版本为5.6),内核可以说的谎话有 8 种:

Namespace    系统调用
Mount    CLONE_NEWNS
UTS    CLONE_NEWUTS
IPC    CLONE_NEWIPC
PID    CLONE_NEWPID
Network    CLONE_NEWNET
User    CLONE_NEWUSER
Cgroup    CLONE_NEWCGROUP
Time    CLONE_NEWTIME

Namespace 详解

1  Mount Namespace
Mount Namespace 用来隔离文件系统的挂载点,不同的 Mount namespace 拥有各自独立的挂载点信息。在 Docker 这样的容器引擎中,Mount namespace 的作用就是保证容器中看到的文件系统的视图。

2 UTS Namespace
UTS Namespace 用来隔离系统的主机名、hostname 和 NIS 域名。

3 IPC Namespace
IPC 就是在不同进程间传递和交换信息。IPC Namespace 使得容器内的所有进程,进行的数据传输、共享数据、通知、资源共享等范围控制在所属容器内部,对宿主机和其他容器没有干扰。

4 PID Namespace
PID namespaces用来隔离进程的 ID 空间,使得不同容器里的进程 ID 可以重复,相互不影响。

5 Network Namespace
Network namespace 用来隔离网络,每个 namespace 可以有自己独立的网络栈,路由表,防火墙规则等。

6 user namespace
user namespace 是例子中讲到的,控制用户 UID 和 GID 在容器内部和宿主机上的一个映射,主要用来管理权限。

7 Time namespace
这个 Namespace 允许操作系统为进程设定不同的系统时间。

8 Cgroup Namespace
这个 Namespace 用来限制 CGroup 根目录下不同层级目录的权限,使得 CGROUP 根目录下的子目录的进程无法影响到父目录。

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章