热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

2.Docker基础NameSpace

namespace(命名隔离)隔离内容系统调用参数内核版本MNTNamespacemount提供磁盘挂载点和文件系统的隔离能力CLONE_NEWNS2.4.19IPCNamespa
namespace(命名隔离) 隔离内容 系统调用参数 内核版本
MNT Namespace mount 提供磁盘挂载点和文件系统的隔离能力 CLONE_NEWNS 2.4.19
IPC Namespace Inter-Process Communication 提供进程间通信的隔离能力 CLONE_NEWIPC 2.6.19
UTS Namespace Unix Timesharing System 提供主机名隔离能力 CLONE_NEWUTS 2.6.19
PID Namespace Process Identification 提供进程隔离能力 CLONE_NEWPID 2.6.24
Net Namespace network 提供网络隔离能力 CLONE_NEWNET 2.6.29
User Namespace user 提供用户隔离能力 CLONE_NEWUSER 3.8

namespace名称空间机制 :内核级

  • MNT Namespace

每个容器都要有独立的根文件系统有独立的用户控件,以实现在容器内启动服务并使用容器的运行环境;即一个是Ubantu服务器,启动一个Centos运行环境的容器并在里面启动一个Nginx服务;此Nginx运行时使用的运行环境是Centos系统目录的运行环境,但是在容器内部是不能访问宿主机资源,宿主机使用chroot技术把容器锁定到一个指定的运行目录里。即容器家目录

/var/lib/containerd/io.containerd.runtime.v1.linux/moby/容器ID

验证容器的根文件系统:
2.Docker基础NameSpace

  • IPC Namespace

一个容器内的进程间通信,允许一个容器内的不同进程的(内存、缓存等)数据访问;但是不能跨容器访问其他容器的数据。

  • UTS Namespace

Unix Timesharing System 包含了运行内核的名称、版本、底层体系结构类型等信息;用于系统表示,其中包含里hostname、域名domainname,它使得一个容器拥有属于自己hostname表示,这个主机名标识独立于宿主机系统和其他的容器
2.Docker基础NameSpace

  • PID Namespace

PID为1的进程(init、systemd)是其他所有进程的父进程,那么在每个容器内也有一个父进程来管理其下属的子进程,多个容器的进程通过PID Namespace进程隔离(例如PID编号重复、容器的主进程生成与回收进程)。
例如:下图是在一个容器内使用top命令看到的PID为1的进程是nginx。
2.Docker基础NameSpace
容器内的Nginx主进程与工作进程:
2.Docker基础NameSpace

那么宿主机的PID究竟与容器内的PID是什么关系?

查看宿主机上的PID信息:
2.Docker基础NameSpace
查看容器中的PID信息:
2.Docker基础NameSpace

clone() – 实现线程的系统调用,用来创建一个新的进程,并可以通过设计上述参数达到隔离。

unshare() – 使某进程脱离某个namespace

setns() – 把某进程加入到某个namespace

  • Net Namespace

每个容器都类似于虚拟机有一样自己的网卡、监听端口、TCP/IP协议栈等,Docker使用Net Namespace启用一个vethX接口,这样你的容器就拥有自己的桥接IP地址,通常是docker0,而docker0实质就是linux的虚拟网桥,网桥是OSI七层模型的数据链路层的网络设备,通过mac地址对网络进行划分,并在不同网络直接传递数据。

查看宿主机的网卡信息:
2.Docker基础NameSpace
查看宿主机桥接设备:
通过brctl show 命令查看桥接设备:

#安装bridge-utils
yum install bridge-utils
#查看网桥
brctl show

2.Docker基础NameSpace

2.Docker基础NameSpace
实逻辑网络图
2.Docker基础NameSpace

  • User Namespace

各个容器内可能会出现重名的用户和用户组名称,或重复的用户UID或者GID,User Namespace允许各个宿主机的各个容器空间内创建相同的用户名以及相同用户UID和GID,只是会把用户的作用范围限制在每个容器内;即A容器和B容器可以有相同的用户名称和ID账户,但是此用户的有效范围仅是当前容器内,不能访问另外一个容器内的文件系统;即相互隔离、互不影响、用不详见


推荐阅读
  • 求助:在CentOS 5.8系统上安装PECL扩展遇到问题
    在 CentOS 5.8 系统上尝试安装 APC 扩展时遇到了问题,具体表现为 PECL 工具无法正常工作。为了确保顺利安装,需要解决 PECL 的相关依赖和配置问题。建议检查 PHP 和 PECL 的版本兼容性,并确保所有必要的库和开发工具已正确安装。此外,可以尝试手动下载 APC 扩展的源代码并进行编译安装,以绕过 PECL 工具的限制。 ... [详细]
  • 在 CentOS 6.4 上安装 QT5 并启动 Qt Creator 时,可能会遇到缺少 GLIBCXX_3.4.15 的问题。这是由于系统中的 libstdc++.so.6 版本过低。本文将详细介绍如何通过更新 GCC 版本来解决这一问题。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • Unity与MySQL连接过程中出现的新挑战及解决方案探析 ... [详细]
  • Git命令基础应用指南
    本指南详细介绍了Git命令的基础应用,包括如何使用`git clone`从远程服务器克隆仓库(例如:`git clone [url/path/repository]`)以及如何克隆本地仓库(例如:`git clone [local/path/repository]`)。此外,还提供了常见的Git操作技巧,帮助开发者高效管理代码版本。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
  • 在VMware虚拟机中部署带有中文图形界面的CentOS 7 Linux系统
    本文详细介绍了在VMware虚拟机中部署带有中文图形界面的CentOS 7 Linux系统的步骤。首先,通过“文件”菜单选择“新建虚拟机”并进入自定义设置。接着,在硬盘兼容性选项中选择默认设置。为了更好地进行Linux操作系统的安装练习,建议选择稍后安装操作系统,并在虚拟机安装完成后,根据实际需求删除不必要的硬件组件。此外,本文还提供了详细的配置参数和注意事项,帮助用户顺利完成整个部署过程。 ... [详细]
  • 在过去,我曾使用过自建MySQL服务器中的MyISAM和InnoDB存储引擎(也曾尝试过Memory引擎)。今年初,我开始转向阿里云的关系型数据库服务,并深入研究了其高效的压缩存储引擎TokuDB。TokuDB在数据压缩和处理大规模数据集方面表现出色,显著提升了存储效率和查询性能。通过实际应用,我发现TokuDB不仅能够有效减少存储成本,还能显著提高数据处理速度,特别适用于高并发和大数据量的场景。 ... [详细]
  • CentOS 7 中 iptables 过滤表实例与 NAT 表应用详解
    在 CentOS 7 系统中,iptables 的过滤表和 NAT 表具有重要的应用价值。本文通过具体实例详细介绍了如何配置 iptables 的过滤表,包括编写脚本文件 `/usr/local/sbin/iptables.sh`,并使用 `iptables -F` 清空现有规则。此外,还深入探讨了 NAT 表的配置方法,帮助读者更好地理解和应用这些网络防火墙技术。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
author-avatar
82年的老代码
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有