zoukankan      html  css  js  c++  java
  • Docker 技术 介绍

    https://github.com/docker/docker
    实现用户空间隔离的技术:名称空间(NameSpace),CGroup(控制组)
    什么是NameSpace::简单的理解就是,每一个虚拟的用户空间可以基于名称空间实现进程pid号、用户名等相同的机制,且每一个虚拟的用户空间相互不受干扰
    什么是CGroup:控制资源使用率的机制
    Docker由GO语言研发,遵守Apache开源协议
    Docker由C/S架构实现,客户端称为:docker client服务端称为:docker server
    • NameSpace名称空间实现用户空间隔离
    1:network namespace
    实现隔离网络协议栈、端口号等
     
    2:user namespace
    实现用户和用户组隔离
     
    3:IPC namespace
    实现进程间通信的隔离
     
    4:pid namespace
    实现进程号隔离
     
    5:mount namespace
    实现挂载隔离
     
    6:UTS namespace
    实现主机名和域名隔离
    • CGroup控制组实现用户空间隔离
    CGroup用户组实现对资源的使用率隔离
    • 归纳总结
    1:那么到底什么是容器技术?
    容器技术 = namespace + Linux的CGroup机制
     
    2:namespace隔离出多个用户空间
     
    3:Linux的CGroup机制为每一个用户空间的分配资源空间
    例如:分配多少CPU资源,分配多少内存资源,分配多少I/O资源
    • CGroup的子系统
    /sys/fs/cgroup目录介绍
    1:blkio
    控制访问块设备的i/o资源
     
    2:cpu
    控制CPU资源的使用率
     
    3:cpuacct
    审计CPU使用时长
     
    4:cpuset
    控制CPU的核心数配比、控制内存物理资源空间的配比(可以理解为分配了一条内存条)
     
    5:memory
    控制内存资源的使用率
     
    6:devices
    控制任务对设备的访问权限
     
    7:freezer
    控制挂起或激活某个任务
     
    8:net_cls
    控制网络i/o资源对不同的用户空间的分配
     
    9:perf_event
    控制性能事件的分配机制
     
    10:hugetlb
    控制大内存页面进行控制
    • Docker文件系统AUFS(advanced multi-layered unification filesystem):
    Docker容器是建立在Aufs基础上的,Aufs是一种Union FS, 简单来说就是支持将不同的目录挂载到同一个虚拟文件系统下,并实现一种layer的概念。Aufs将挂载到同一虚拟文件系统下的多个目录分别设置成read-only,read-write以及whiteout-able权限,对read-only目录只能读,而写操作只能实施在read-write目录中。重点在于,写操作是在read-only上的一种增量操作,不影响read-only目录。当挂载目录的时候要严格按照各目录之间的这种增量关系,将被增量操作的目录优先于在它基础上增量操作的目录挂载,待所有目录挂载结束了,继续挂载一个read-write目录,如此便形成了一种层次结构。
     
    docker强依赖于AUFS,因为每一种应用程序都需要特定的运行环境,包括rootfs、以及程序运行的库文件、配置文件
     
     
     

    Docker 概念、简要应用

    1:registry:类似综合仓库,用于保存docker image、layer information
    2:repository:一般基于操作系统发行版本分类
    3:index:管理registry的检索,例如docker search ubantu 就会先检索index
    4:graph:管理本地docker的本地镜像的元数据
  • 相关阅读:
    cookie实例---显示上一次访问的时间与java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value
    No Mapping For GET "xxx.do"
    Mybatis 配置文件
    spring整合JUnit测试
    Spring 约束文件配置
    c3p0封装
    Linux下载:wget、yum与apt-get用法及区别
    docker安装各种坑
    动态管理upsteam---nginx_http_dyups_module
    安装nginx环境(含lua)时遇到报错ngx_http_lua_common.h:20:20: error: luajit.h: No such file or directory的解决
  • 原文地址:https://www.cnblogs.com/liu1026/p/7768591.html
Copyright © 2011-2022 走看看