热门标签 | 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账户,但是此用户的有效范围仅是当前容器内,不能访问另外一个容器内的文件系统;即相互隔离、互不影响、用不详见


推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
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社区 版权所有