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

相关推荐
dj80451 分钟前
docker 安装注意事项与使用
spring cloud·docker·eureka
REDcker9 分钟前
Linux文件IO底层原理详解
linux·运维·spring
为思念酝酿的痛9 分钟前
线程同步与互斥
linux·运维·服务器·后端
一条代码鱼16 分钟前
Linux 文件实时同步完全指南:Lsyncd vs Inotifywait+Rsync
linux·运维·服务器
IT策士20 分钟前
Docker 从 0 到 1 再到 Kubernetes 实战:第13篇 Compose 环境变量与配置管理
docker·容器·kubernetes
艾莉丝努力练剑25 分钟前
【Linux网络】Linux 网络编程:传输层协议TCP(三)
linux·运维·服务器·网络·tcp/ip·http
小程故事多_8028 分钟前
从想法到落地零返工,AI Agent六阶段自动化开发全流水线实践
运维·人工智能·自动化
keyipatience29 分钟前
21,22 (半)深入理解Linux重定向与缓冲区机制
linux·运维·服务器
木雷坞31 分钟前
Docker / K8s 镜像拉取失败排查:专属加速域名与白名单配置思路
docker·容器·kubernetes
风向决定发型丶32 分钟前
Logrotate配置nginx日志切割
运维·nginx