在 Linux 系统中namespace 是在内核级别以一种抽象的形式来封装系统资源的通过将系统资源放在不同的 namespace 中来实现资源隔离的目的。设置了不同 namespace 的程序就可以享有彼此独立的一份系统资源。Linux 中当前可用的命名空间如下rootdocker-host:~# ls -l /proc/$$/ns total 0 lrwxrwxrwx 1 root root 0 Jul 6 10:44 cgroup - cgroup:[4026531835] lrwxrwxrwx 1 root root 0 Jul 6 10:44 ipc - ipc:[4026531839] lrwxrwxrwx 1 root root 0 Jul 6 10:44 mnt - mnt:[4026531840] lrwxrwxrwx 1 root root 0 Jul 6 10:44 net - net:[4026531992] lrwxrwxrwx 1 root root 0 Jul 6 10:44 pid - pid:[4026531836] lrwxrwxrwx 1 root root 0 Jul 6 10:44 pid_for_children - pid:[4026531836] lrwxrwxrwx 1 root root 0 Jul 6 10:44 user - user:[4026531837] lrwxrwxrwx 1 root root 0 Jul 6 10:44 uts - uts:[4026531838] rootdocker-host:~#当前系统使用到的命名空间有cgroup ns隔离 CGroup 视图。ipc ns隔离进程间通信资源。mnt ns隔离文件系统挂载点。net ns隔离网络资源。pid ns隔离进程 ID。user ns隔离用户和用户组 ID。uts ns隔离主机名和域名。pid_for_children: 当前进程的子进程将继承的 PID ns。下面通过从非管理账户 user1 的视角来具体理解命名空间的工作原理。首先配置 user1 用户的 sudo 免密并添加 dockers 组这组操作请自行完成。以 user1 用户登录新的会话运行一个名字 conns 的 alpine 容器user1docker-host:~$ docker run --name conns --rm -id alpine ash e2b6aac529d8181064b1ad29a7f28cce84307ef11badbc1aa6701188f73b0b35 user1docker-host:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e2b6aac529d8 alpine ash 4 seconds ago Up 3 seconds conns user1docker-host:~$我们知道conns 容器包含有一个精简但完整的 rootfs 文件系统user1docker-host:~$ docker exec -it conns ash / # ls -l total 56 drwxr-xr-x 2 root root 4096 Jun 13 16:38 bin drwxr-xr-x 5 root root 340 Jul 6 10:51 dev drwxr-xr-x 1 root root 4096 Jul 6 10:51 etc drwxr-xr-x 2 root root 4096 Jun 13 16:38 home drwxr-xr-x 6 root root 4096 Jun 13 16:38 lib drwxr-xr-x 5 root root 4096 Jun 13 16:38 media drwxr-xr-x 2 root root 4096 Jun 13 16:38 mntdrwxr-xr-x 2 root root 4096 Jun 13 16:38 opt dr-xr-xr-x 277 root root 0 Jul 6 10:51 proc drwx------ 1 root root 4096 Jul 6 10:54 root drwxr-xr-x 3 root root 4096 Jun 13 16:38 run drwxr-xr-x 2 root root 4096 Jun 13 16:38 sbin drwxr-xr-x 2 root root 4096 Jun 13 16:38 srv dr-xr-xr-x 13 root root 0 Jul 6 10:51 sys drwxrwxrwt 2 root root 4096 Jun 13 16:38 tmp drwxr-xr-x 7 root root 4096 Jun 13 16:38 usr drwxr-xr-x 11 root root 4096 Jun 13 16:38 var / #将 conns 容器的文件系统导出user1docker-host:~$ mkdir mancontainer user1docker-host:~$ cd mancontainer user1docker-host:~/mancontainer$ docker export conns -o dockercontainer.tar user1docker-host:~/mancontainer$ ls -l total 8500 -rw------- 1 user1 user1 8700416 Jul 6 10:59 dockercontainer.tar user1docker-host:~/mancontainer$在当前目录创建一个 rootfs 目录并将导出的 conns 文件系统解压到这个目录这么做的目的就是要手工创建一个资源隔离的类似容器对象。好了新的文件系统好像是独立的 root 文件系统但是看 ip link 命令显示的网络信息可以发现除了挂载点之外的网络、进程等资源在“模拟容器”中都能看到这些资源没有隔离。 回到 user1 用户使用 unshare 命令隔离出一组新的命名空间集合。unshare 命令用于创建一个新 ns 集合并在其 中启动一个 Bash shell实现资源隔离这是 Linux 容器技术的基础之一。重点如果此时我们在其他终端上检查主机中的进程时会看到即使上面的用户 root在进程之外也是在普通用 户 user1 的凭据下执行的rootdocker-host:~# ps -ef | grep 2640 user1 2640 2625 0 10:50 pts/0 00:00:00 -bash user1 4066 2640 0 11:34 pts/0 00:00:00 unshare --mount --uts --ipc --net --pid --fork --user --map-root-user /bin/bash root 4341 3429 0 11:44 pts/1 00:00:00 grep --colorauto 2640 rootdocker-host:~#这就是 PID 命名空间的神奇之处它使得一个进程具有不同的 PID 号例如 K8s pod 场景。回到 “模拟容器” 环境如果想要显示当前正在运行的进程结果先显示的是主机中的所有进程rootdocker-host:~/mancontainer# ps -ef UID PID PPID C STIME TTY TIME CMD nobody 1 0 0 10:41 ? 00:00:01 /sbin/init maybe‑ubiquity nobody 2 0 0 10:41 ? 00:00:00 [kthreadd] nobody 3 2 0 10:41 ? 00:00:00 [rcu_gp] nobody 4 2 0 10:41 ? 00:00:00 [rcu_par_gp] ......回到“模拟容器”环境会看到有一个新的网络设备出现了rootdocker-host:~/mancontainer# ip link 1: lo: LOOPBACK mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 10: vethContainerif11: BROADCAST,MULTICAST mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether ea:b5:ca:8c:db:f8 brd ff:ff:ff:ff:ff:ff link‑netnsid 0 rootdocker-host:~/mancontainer#
企业数字化 ERP 产品动态
相关推荐
STM32 SBUS协议解析:DMA+IDLE中断+状态机三重保障 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 3:54:46
VSCode C++头文件路径配置:IntelliSense includePath详解 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 3:54:40
中兴B860AV2.1高安版刷机与救砖实战指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 3:54:40
商务洽谈总记不住客户需求?我用这套方案,告别“会后失忆症” 做销售和商务的朋友应该都有过这种体验:一场客户面谈聊了两个小时,对方说了很多需求、顾虑、期望,当时觉得都记住了,可回到公司写跟进记录的时候,大脑却一片空白——客户到底强调了哪三点?那个预算范围是多… · 2026/9/26 5:26:00
SSE流式传输实战:从协议原理到生产环境避坑指南 1. 从一次线上事故说起:为什么流式传输值得单独拎出来讲去年帮一个团队排查线上问题,现象很典型:AI 对话页面在回答较长内容时,用户要盯着空白转圈十几秒,然后整段文字"啪"地一下全冒出来。产品经理觉得是模… · 2026/9/26 5:26:00
Steam游戏启动卡在正在启动?17步底层诊断与修复指南 1. 项目概述:为什么“正在启动”成了Steam玩家最熟悉的等待界面 你点开《赛博朋克2077》,鼠标悬停在“播放”按钮上,指尖一按——屏幕右下角弹出小窗口:“正在启动”,进度条纹丝不动。你盯着它看了30秒、60秒、两分钟… · 2026/9/26 5:25:48
【行空板K10】从环境搭建到用华为云码道生成「中秋快乐」 文章目录一、前言二、软件安装与工程配置2.1 安装 PlatformIO(以 VSCode 为例)2.2 新建工程并配置 platformio.ini2.3 跑通官方测试代码三、踩坑记录:中文路径/文件名导致的编译错误四、用华为云码道(CodeArts)生成「中秋快乐」彩色文字4.1 需… · 2026/9/26 5:25:48
SSM后端+微信小程序:社区垃圾回收管理系统全栈实战教程 简介:一套基于微信小程序的社区垃圾回收管理系统SSM后端毕业设计源码案例,面向计算机专业毕业生、课程设计学习者及微信小程序/后端开发爱好者。系统涵盖用户管理、垃圾回收请求提交、垃圾分类指导、任务分配、进度跟踪与数据统计等核心功能,… · 2026/9/26 5:25:48
SSM+微信小程序社区养老服务系统:环境搭建、业务走读与避坑指南 简介:基于微信小程序与SSM后端的高分毕业设计完整源码包可用于毕业设计、课程设计及期末大作业,面向计算机专业毕业生和需要项目实战练习的学习者。项目以社区养老服务为业务场景,围绕护理预约、健康管理、日常生活照料、文化娱乐活动等模块展… · 2026/9/26 5:25:48
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46