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的本地镜像的元数据

Docker 技术 介绍的更多相关文章

  1. 学习Mysql过程中拓展的其他技术栈:Docker入门介绍

    一.Docker的介绍和安装 1. Docker是什么 百度百科的介绍: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linu ...

  2. Docker简单介绍

    Docker简单介绍 Docker是一个能够把开发的应用程序非常方便地部署到容器的开源引擎.由Docker公司团队编写,基于Apache 2.0开源授权协议发行.Docker的主要目的例如以下: 提供 ...

  3. 容器化 — 基于Docker技术容器云

    导读:本文介绍了基于Docker技术的企业级应用容器平台,从云的定义.云服务分类,到用友云PaaS基础平台.平台总体架构.架构预览.部署架构.平台核心价值和核心竞争力,阐述PaaS基础平台成为广大传统 ...

  4. docker技术之安装

    由于工作原因需要使用docker完成集群的搭建,特此记录一下研究的docker技术. 首先简单的介绍一下docker: Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 L ...

  5. Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥

    1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...

  6. 基于ASP.Net Core学习Docker技术第一步:在CentOS7安装Docker平台

    Docker技术几年前就火了,伴随着今年来devops的流行,这项技术一直被技术社区追捧.提起Docker很容易被默认为是Linux平台下的技术,.NET的技术跟他似乎没有沾边,不过那是对非.NET ...

  7. Docker技术初体验

    什么是Docker Docker技术和虚拟机技术类似,他们都能在一个Host系统中划分出多个相互独立隔离的运行环境.借助官方配图: 虚拟机的示意图是这样的 我们需要为每个虚拟机安装自己的操作系统,即使 ...

  8. docker技术入门(1)

    1Docker技术介绍 DOCKER是一个基于LXC技术之上构建的container容器引擎,通过内核虚拟化技术(namespace及cgroups)来提供容器的资源隔离与安全保障,KVM是通过硬件实 ...

  9. [转帖]新一代IBM Z14主机技术介绍

    新一代IBM Z14主机技术介绍 https://cloud.tencent.com/developer/news/268909 IBM最新的已经有IBM Z15 主机了.. 文章来源:企鹅号 - 云 ...

随机推荐

  1. HCNA(一)网络传输介质

    一 .同轴线缆 介绍:同轴线缆是一种早期的网络传输介质,同轴电缆的得名与它的结构相关,由内导体.外导体.绝缘介质和防护套四部分组成.同样支持10Mbps传输速率.现在已经基本被淘汰,不在应用于企业网络 ...

  2. 虚拟机与ARM之间的交叉编译总结

    通过三大服务的配置,我们可以在ARM中下载内核和文件系统.我们通过在虚拟机中编程,得到的程序不能在ARM中运行,需要经过一个交叉编译.得到的可执行程序可以在ARM中运行,此时不能在虚拟机Linux中运 ...

  3. centos6.9下安装python3.7

    说明 以下所有操作都基于centos6.9 python3.7依赖openssl1.0.2,首先更新系统自带的openssl 建议 升级系统到centos7(系统openssl已升级到1.0.2) 升 ...

  4. docker swarm实现java项目的发布/滚动更新/回滚/镜像管理

    使用docker swarm滚动更新java项目,部署集群,这一切的前提是使用Jenkins+maven进行项目打包,分发等功能 具体可以参考我的另外三篇文章 https://www.cnblogs. ...

  5. Titanic幸存预测分析(Kaggle)

    分享一篇kaggle入门级案例,泰坦尼克号幸存遇难分析. 参考文章: 技术世界,原文链接 http://www.jasongj.com/ml/classification/ 案例分析内容: 通过训练集 ...

  6. ASP.NET 并发控制

    当多个用户试图同时修改数据时,需要建立控制机制来防止一个用户的修改对同时操作的其他用户所作的修改产生不利的影响.处理这种情况的系统叫做“并发控制”. 并发控制的类型 通常,管理数据库中的并发有三种常见 ...

  7. 20155311《Java程序设计》实验五(网络编程与安全)实验报告

    20155311<Java程序设计>实验五(网络编程与安全)实验报告 一.实验内容及步骤 任务一: 编写MyBC.java实现中缀表达式转后缀表达式的功能 编写MyDC.java实现从上面 ...

  8. maven 发布springboot项目

    1.把Spring Boot打包成JAR的形式,需要在pom.xml文件对应以下代码 <build> <finalName>ljl</finalName> //打包 ...

  9. DSP5509项目之用FFT识别钢琴音调(5)之开始傅里叶变换

    1. 首先电脑上下载一个音频模拟的软件 2. 研究下钢琴的声音范围27HZ到4000HZ,那么采样频率需要是信号的两倍频率以上,所以建议采样频率是16KHZ.先看一下采集到的数据,如下是空载时候采集到 ...

  10. django中的路由控制详解

    一 Django中路由的作用 二 简单的路由配置 三 有名分组 四 路由分发 五 反向解析 六 名称空间 七 django2.0版的path 一 Django中路由的作用 URL配置(URLconf) ...