zoukankan      html  css  js  c++  java
  • docker namespace

    目前docker完成6项隔离

    namespace 系统调用参数 隔离内容
    UTS CLONE_NEWUTS 主机名与域名
    IPC CLONE_NEWIPC 信号量,消息队列,共享内存
    PID CLONE_NEWPID 进程编号
    Network CLONE_NEWNET 网络设备,网络栈,端口等
    Mount CLONE_NEWNS 挂载点(文件系统)
    User CLONE_NEWUSER 用户和用户组
         

    Linux 内核3.8及以后的版本

    namespace 的API包括

       clone()

       setns()

       unshare()

    Mount namespace:
    隔离文件系统挂载点,每个进程能看到的文件系统都记录在/proc/$$/mounts里,
    UTS namespace:
    使每个docker拥有独立的主机名和域名,在网络上可以被视为一个独立的节点,而非宿主机的一个进程
    IPC namespace:
    涉及到的IPC资源有包括常见的信号量,消息队列和共享内存,容器和宿主机,容器与容器之间,容器与宿主机之间隔离
    PID namespace:
    对进程PID重新标号,两个不同的namespace下的进程可以有相同的PID,内核中为所有的PID维护了一个树状结构,最顶层的是系统初始时建立的即root namespace,它创建的新PID namespace被称为child namespace(树的子节点),通过这种方式,不同的PID namespace会形成一个层级体系,所有的父节点可以看到子节点中的进程,并通过信号的方式对子节点中的进程产生影响,但是子节点看不到父节点PID namespace中的任何内容
    Nework namespace:
    对网络相关资源进行隔离,每个network namespace都有自己的网络设备,IP地址,路由表,/proc/net 目录,端口号等, 有了网络隔离,比如有两个容器的web应用都是用了80端口,因为隔离就不会冲突
    User namespace:
    隔离用户和组ID,也就是说一个进程在namespace里和用户和组ID可以和它在host里的ID可以不一样,
  • 相关阅读:
    类似qq弹窗,自动消失
    词法分析实验报告
    编译原理
    开发中遇到的杂七杂八
    Gradle+Jetty实现静态资源的热部署
    Eclipse中进行Gradle+Jetty部署的web项目的断点调试
    俳句与短歌收藏
    影评收藏
    诗歌与词曲收藏
    歌词收藏
  • 原文地址:https://www.cnblogs.com/allenhaozi/p/8283176.html
Copyright © 2011-2022 走看看