容器核心技术–Namespace
发布时间:2023-06-05 13:01:01 所属栏目:教程 来源:
导读:简单来说,Namespace 可以为容器提供系统资源隔离能力。
当然,这样讲过于笼统,我们来举个例子:假如一个容器中的进程需要使用 root 权限,出于安全考虑,我们不可能把宿主机的 root 权限给他。但是通过 Namespa
当然,这样讲过于笼统,我们来举个例子:假如一个容器中的进程需要使用 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 根目录下的子目录的进程无法影响到父目录。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |