关于linux namespace学习

linuxnamespace学习

文章阅读:https://coolshell.cn/articles/17010.html

https://coolshell.cn/articles/17029.html

https://coolshell.cn/articles/17029.html

命名空间

目前,Linux 实现了六种不同类型的命名空间。每个命名空间的目的是将特定的全局系统资源包裹在一个抽象中,使命名空间内的进程看起来像是拥有独立的全局资源实例。命名空间的总体目标之一是支持容器的 实现,容器是一种用于轻量虚拟化(以及其他用途)的工具,它让一组进程产生了它们是系统中唯一进程的错觉。

linux 总共有6大命名空间,是docker容量隔离的关键:

  • Mount namespaces

    挂载命名空间用于隔离进程组的文件系统挂载点集合,使不同命名空间内的进程拥有独立的文件系统层级视图。启用后,mount () 和 umount () 不再作用于全局挂载点,而仅影响调用进程所属的挂载命名空间。

  • UTS namespaces

    UTS 命名空间隔离 uname () 返回的主机名和域名,容器可拥有独立主机名与 NIS 域名,便于配置脚本识别执行。

  • IPC namespaces

    IPC 命名空间用于隔离进程间通信资源,包括 System V IPC 对象及 Linux 2.6.30 后的 POSIX 消息队列。这类 IPC 对象不通过文件路径标识,每个 IPC 命名空间都拥有独立的 IPC 标识符与消息队列文件系统。

  • PID namespaces

    PID 命名空间用于隔离进程 ID 编号空间,不同命名空间内的进程可使用相同 PID。

  • Network namespaces

    网络命名空间隔离网络相关系统资源,每个命名空间拥有独立的网络设备、IP 地址、路由表、/proc/net 目录及端口号等。

  • User namespaces

    用户命名空间隔离用户 ID 与组 ID 空间,进程在命名空间内外的 UID、GID 可不一致,甚至能在外部为普通用户、在内部映射为 UID 0(root),从而在命名空间内拥有完整管理员权限,外部则保持普通权限。

在目前新内核中又引入了cgrouptime

  • cgroup

    Cgroup Namespace 是 Linux 内核 4.6 版本引入的命名空间,核心作用是隔离进程可见的 cgroup 根目录。

    没有 cgroup namespace 时:所有进程都能看到系统全局的 /sys/fs/cgroup 根目录,容器内进程也能看到宿主机上所有其他容器的 cgroup 路径,存在信息泄露和越权风险。

    有 cgroup namespace 时:容器内进程看到的 /sys/fs/cgroup 根目录,被虚拟化映射到容器自身的 cgroup 子目录,完全看不到宿主机和其他容器的 cgroup 结构,实现了彻底的隔离。

  • time

    Time 命名空间用于隔离进程的单调时钟与系统启动时间,让每个命名空间可拥有独立的运行时间视图,但不影响实际系统时间。

相关推荐
Tim_Van2 小时前
在 CentOS 7 中安装 Chromium 的完整步骤
linux·运维·chrome·centos
2023自学中2 小时前
C++ 内存追踪器
linux·c++
孫治AllenSun2 小时前
【Nginx】配置参数和使用案例
运维·nginx
啵啵鱼爱吃小猫咪3 小时前
Ubuntu 20.04 + ROS Noetic 源码安装 libfranka 0.8.0 和 franka_ros 0.8.0 完整教程
linux·运维·ubuntu
Piko6144 小时前
锐捷 VSU 虚拟化堆叠配置
运维·网络·笔记
ljs6482739514 小时前
Linux运维实操:vi编辑器永久配置静态IP(CentOS系列)
linux·运维·编辑器
dddwjzx4 小时前
嵌入式Linux C应用编程入门——高级I/O
linux·嵌入式
2301_780303904 小时前
网络安全、自动化运维、ERP、CRM、MES
运维·web安全·网络安全·自动化·安全威胁分析
AOwhisky5 小时前
Python 学习笔记(第三期)——流程控制:条件判断与循环结构
运维·笔记·python·学习·云原生·流程控制·循环
IpdataCloud5 小时前
AI生成的Avalon恶意框架怎么防?用IP离线库识别模块化C2通信
运维·人工智能·网络协议·tcp/ip·ip