zoukankan      html  css  js  c++  java
  • Dockerfile-Namespace

    Docker核心-Namespaces(命名空间)

    1)概念:

    命令空间是Linux内核的一个强大的特性。每个容器都有自己单独的命令空间,运行在其中的应用都是独立在操作系用中运行一样。命名空间保证了容器之间彼此互不影响。
    命名空间 (namespaces) 是 Linux 为我们提供的用于分离进程树、网络接口、挂载点以及进程间通信等资源的方法。在日常使用 Linux 或者 macOS 时,我们并没有运行多个完全分离的服务器的需要,但是如果我们在服务器上启动了多个服务,这些服务其实会相互影响的,每一个服务都能看到其他服务的进程,也可以访问宿主机器上的任意文件,这是很多时候我们都不愿意看到的,我们更希望运行在同一台机器上的不同服务能做到完全隔离,就像运行在多台不同的机器上一样。当我们其中一个服务被黑客入侵了,那么其他服务也会遭受这个黑客攻击。
    linux默认的时候是不能同时启动两个80端口的apachenginx,但是我们利用命令空间技术就可以实现,每个进程之间互不关联。

    2)Linux上有哪些命名空间

    1,PID Namespaces(PID 命名空间,CLONE_NEWPID)
    不同用户登录的进程就是通过PID Namespaces 来隔开的,且每个Namespaces 中可以有 相同的PID。所有的LXC进程在Docker中的父进程为Docker进程,每个 LXC 进程具有不同的Namespaces。同时由于允许嵌套,因此可以很方便的实现嵌套的 Docker 容器;

    2,Net Namespaces(网络命名空间,CLONE_NEWNET)
    有了Pid Namespaces,每个Namespaces中的PID能够相互隔离,但是 network port还是共享host的端口。网络隔离是通过 Net Namespaces空间实现的,每个Net Namespaces 有独立的网络设备,IP地址,路由表,/proc/net目录。这样每个container的网络就能个离开。Docker默认采用veth的方式,将容器中的虚拟网卡同host上的一个Docker网桥Docker0连接在一起;

    3,IPC Namespaces(,CLONE_NEWPID)
    continer中进程交互采用了Linux常见的进程交互方法(interprocess communication 进程间通信– IPC),包括信号量、消息队列和共享内存等;然后同VM不同的是:continer的进程(procession)间交互实际上还是host上具有相同PID名字空间中的进程间交互,因此需要在IPC资源申请时加入Namespaces信息,每个IPC资源有一个唯一的32位ID

    4, Mount Namespaces(挂载命令空间,CLONE_NEWNS)
    类似于chroot,将一个进程放到一个特点的目录执行。mount Namespaces允许不同Namespaces的进程看到的文件结构不同,这样每个Namespaces中的进程所看到的文件目录就被隔离开了。和chroot不同的是,每个Namespaces的container在/proc/mounts的信息只包含所在的Namespaces的mount point(挂载点);

    5,UTS Namespaces
    UTS(UNIX Time-sahring system),允许每个continer都拥有独立的hostnamedomain name,使其在网络上可以被视作一个独立的节点而非主机上的一个进程。

    6,User Namespacer(用户命令空间)
    每个continer可以有不同的用户和组ID,可就时可以说每个continer可以用自己内部的用户,不用依赖于宿主机

    3,作用

    用于容器之间的资源进程隔离的

  • 相关阅读:
    LVS+KEEPALIVED(2/3)
    LVS+KEEPALIVED(1/3)
    DRF之权限源码详解
    DRF认证之源码详解
    Django REST framework之JWT
    Restful_Framework之插件
    求两个有序数组的中位数,要求时间复杂度log(m+n)
    Django_Restful_Framework视图与路由
    Django_Restful_Framework
    restFul接口设计规范
  • 原文地址:https://www.cnblogs.com/shoufu/p/12904830.html
Copyright © 2011-2022 走看看