• 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可以不一样,
  • 相关阅读:
    前端必须掌握的 docker 技能(2)
    前端必须掌握的 docker 技能(1)
    异步 map 和模块打包
    import 和组件库按需引入
    babel-node 和 nodemon
    linux和mac 终端代理
    yarn.lock 是干什么的
    pwa 总结
    设计模式(5): vue 不监听绑定的变量
    django+celery+redis应用
  • 原文地址:https://www.cnblogs.com/allenhaozi/p/8283176.html
Copyright © 2020-2023  润新知