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

相关推荐
小小的木头人15 分钟前
Ubuntu 使用 udev + systemd + UUID 实现 USB 硬盘自动挂载
linux·运维·ubuntu
Kevin Wang7271 小时前
Nvidia-AGX-spark部署手册——课堂质量诊断(jetpack:r36)
python·docker·容器
布鲁飞丝1 小时前
彩笔运维勇闯机器学习--cpu与qps的线性关系
运维·人工智能·机器学习
kaoa0002 小时前
Linux入门攻坚——84、网络虚拟化技术-1
linux·运维·服务器
RisunJan2 小时前
Linux命令-shutdown(安全关闭或重启系统)
linux·服务器·安全
2601_965798472 小时前
MTDb Movie & TV Database Script Setup, Caching, and SEO Guide
linux·服务器·数据库·php
我头发多我先学3 小时前
linux系统编程:初识进程
linux·运维·服务器
Freak嵌入式3 小时前
版本混乱 / 依赖缺失?uPyPi:MicroPython 版 PyPI,彻底解决库管理混乱
linux·服务器·数据库·单片机·嵌入式硬件·性能优化·依赖倒置原则
云飞云共享云桌面3 小时前
SolidWorks—天津智能装备工厂1台高配主机共享给10个研发用
运维·服务器·自动化·汽车·制造
回眸不遇3 小时前
将 Docker虚拟磁盘文件ext.vhdx迁移出C盘 ,更换到D盘
c语言·docker·容器