zoukankan      html  css  js  c++  java
  • 2.Docker基础NameSpace

    隔离性:namespace

    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

    验证容器的根文件系统:

    • IPC Namespace

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

    • UTS Namespace

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

    • PID Namespace

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

    容器内的Nginx主进程与工作进程:

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

    查看宿主机上的PID信息:

    查看容器中的PID信息:

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

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

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

    • Net Namespace

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

    查看宿主机的网卡信息:

    查看宿主机桥接设备:
    通过brctl show 命令查看桥接设备:

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


    实逻辑网络图

    • User Namespace

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

  • 相关阅读:
    C# 获取文件名及扩展名
    Javscript调用iframe框架页面中函数的方法
    jquery事件重复绑定的几种解决方法 (二)
    Jquery 点击事件重复获取叠加 (一)
    .NET 即时通信,WebSocket服务端实例
    .Net ASP.NET 打开指定文件夹
    动态 hover 使用变相使用
    给 layui upload 带每个文件的进度条, .net 后台代码
    layui upload 后台获取不到值
    ECharts配置项之title(标题)
  • 原文地址:https://www.cnblogs.com/Gmiaomiao/p/13143915.html
Copyright © 2011-2022 走看看