1. 名称空间:NameSpace

内核级别,环境隔离;

1.1. 名称空间的历史
PID NameSpace:Linux 2.6.24 ,PID隔离
Network NameSpace:Linux 2.6.29,网络设备、网络栈、端口等网络资源隔离
User NameSpace:Linux 3.8,用户和用户组资源隔离
IPC NameSpace:Linux 2.6.19,信号量、消息队列和共享内存的隔离
UTS NameSpace:Linux 2.6.19,主机名和域名的隔离;
Mount NameSpace:Linux 2.4.19,挂载点(文件系统)隔离;

1.2. API 
clone()

setns()

unshare()

2. CGroup:Linux Control Group, 控制组, Linux 2.6.24
内核级别,限制、控制与一个进程组群的资源;

2.1. 资源:CPU,内存,IO

2.2. 功能:
Resource limitation:资源限制;
Prioritization:优先级控制;
Accounting:审计和统计,主要为计费;
Control:挂起进程,恢复进程;

e.g.
/sys/fs/cgroup
mount
lssubsys -m

2.3. CGroups的子系统(subsystem):
blkio:设定块设备的IO限制;
cpu:设定CPU的限制;
cpuacct:报告cgroup中所使用的CPU资源;
cpuset:为cgroup中的任务分配CPU和内存资源;
memory:设定内存的使用限制;
devices:控制cgroup中的任务对设备的访问;
freezer:挂起或恢复cgroup中的任务;
net_cls:(classid),使用等级级别标识符来标记网络数据包,以实现基于tc完成对不同的cgroup中产生的流量的控制;
perf_event:使用后使cgroup中的任务可以进行统一的性能测试;
hugetlb:对HugeTLB系统进行限制;

2.4. CGroups中的术语:
task(任务):进程或线程;
cgroup:一个独立的资源控制单位,可以包含一个或多个子系统;
subsystem:子系统
hierarchy:层级

3. AUFS:UnionFS
3.1. UnionFS:把不同的物理位置的目录合并到同一个目录中。

3.2. Another UFS, Alternative UFS, Adanced UFS

3.3. Device mapper/OverlayFS:由于Redhat并不原生支持AUFS,但是为了适应Docker技术,在RHEL6中引进的文件系统,也可以使用OverlayFS,但是需要额外的配置

配置CentOS支持AUFS见:https://www.jianshu.com/p/63fdb0c0659c

AUFS的RPM下载源:https://yum.spaceduck.org/kernel-ml-aufs/kernel-ml-aufs.repo

AUFS实验:https://segmentfault.com/a/1190000008489207

DeviceMapper实验:http://www.infoq.com/cn/articles/analysis-of-docker-file-system-aufs-and-devicemapper

Linux 2.6内核引入的最重要的技术之一,用于在内核中支持逻辑卷管理的通用设备映射机制;
Mapped Device
Mapping Table
Target Device

4. Docker:
2013, GO, Apache 2.0, dotCloud

C/S:
Docker Client: 发起docker相关的请求;
Docker Server: 容器运行的节点;

4.1. 核心组件:
docker client:docker的客户端工具,是用户使用docker的主要接口,docker client与docker daemon通信并将结果返回给用户;
docker deamon:运行于宿主机上,Docker守护进程,用户可通过docker client与其交互;
image:镜像文件是只读的;用来创建container,一个镜像可以运行多个container;镜像文件可以通过Dockerfile文件创建,也可以从docker hub/registry下载;
repository
公共仓库:Docker hub/registry
私有仓库:docker registry

docker container:docker的运行实例,容器是一个隔离环境;

另外两个重要组件:
docker link:
docker volume:

5. Docker功能:
隔离应用
维护镜像
创建易于分发的应用
快速扩展

【Linux】【Services】【Docker】基础理论的更多相关文章

  1. 使用VS把ASP.NET 5的应用发布到Linux的Docker上

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:我相信未来应用程序的部署模式首选一定会是Docker,所以.NET社区的朋友也不应该忽 ...

  2. Linux(Manjaro) - Docker - MySQL 安装配置

    Linux(Manjaro) - Docker - MySQL 安装配置 拉取mysql镜像 # 使用网易的 MySQL 镜像地址 docker pull hub.c.163.com/library/ ...

  3. 【Docker】(3)---linux部署Docker、Docker常用命令

    linux部署Docker.Docker常用命令 本次部署Linux版本:CentOS 7.4 64位. 说明: 因为Docker是基于Linux 64bit的 所以Docker要求64位的系统且内核 ...

  4. 将自己的SpringBoot应用打包发布到Linux下Docker中

    目录 将自己的SpringBoot应用打包发布到Linux下Docker中 1. 环境介绍 2. 开始前的准备 2.1 开启docker远程连接 2.2 新建SpringBoot项目 3. 开始构建我 ...

  5. linux --- 9. docker 容器 和 rabbitmq 队列

    一. docker 容器 1.docker是什么? .linux下容器技术有很多,docker是做的最杰出的一款 .docker能够支撑阿里双十一,京东618的业务,说明,性能,安全性不得差 .doc ...

  6. Linux通过docker安装运行酷Q--用QQ骰子君进行跑团

    Linux通过docker安装运行酷Q 文:铁乐与猫 需求:和小伙伴周末进行愉快的TRPG跑团,需要在QQ讨论组上加了qq小号后,将qq小号用酷Q配合投骰的应用变成骰子君. 限制:我个人的云计算服务器 ...

  7. vs2017创建netcore项目,部署到linux的docker容器里面

    开发环境 1.win10下面安装VS2017 2.linux安装Ubuntu16.4系统 步骤: 第一步:linux安装docker容器 docker中文文档,里面有详解的docker介绍及讲解,建议 ...

  8. Linux下docker的安装

    前言: 因为之前在自己的mac上直接使用HomeBrew的包管理安装的,使用brew install docker即可,这种方法简单,但最近想尝试在Linux下安装,费了一些时间,主要是启动docke ...

  9. 本地Docker Jenkins构建dotnet core web应用到Linux服务器 Docker上

    1.准备工作 环境 本地: Windows.Docker 代码仓库:Git 服务器:Linux.Docker 前提准备 创建个有dockerfile文件的dotnet core 3 web项目 新建一 ...

  10. Linux 使用 docker 下搭建xunsearch 搜索引擎服务

    Linux 使用 docker 下搭建 xunsearch 搜索引擎服务 安装 docker 环境(菜鸟教程有说明) 安装docker说明 下载并运行 xunsearch 的服务端:docker安装x ...

随机推荐

  1. 浅谈springboot自动配置原理

    前言 springboot自动配置关键在于@SpringBootApplication注解,启动类之所以作为项目启动的入口,也是因为该注解,下面浅谈下这个注解的作用和实现原理 @SpringBootA ...

  2. 设计模式学习-使用go实现装饰模式

    装饰器模式 定义 代码实现 优点 缺点 适用范围 装饰器模式和桥接模式的区别 参考 装饰器模式 定义 装饰模式:动态的给一些对象添加额外的职责,就增加功能来说,装饰模式比生成子类更灵活. 举个栗子: ...

  3. 《Python语言程序设计》【第3周】基本数据类型

    实例3:天天向上的力量 #DayDayUpQ1.py dayup = pow(1.001,365) daydown = pow(0.999,365) print("向上: {:.2f},向下 ...

  4. [uoj272]石家庄的工人阶级队伍比较坚强

    假设$x,y\in \{0,1,2\}$,则$x$能赢$y$(根据题中定义)当且仅当$x-y\equiv 1(mod\ 3)$ 定义$\ominus$为两数3进制下不退位的减法,$S_{x}$表示$x ...

  5. [loj3043]线段树

    考虑把每一个区间单独统计,令$f[i]$表示第i个区间有标记的次数,$g[i]$表示第i个区间及其祖先中存在标记的次数,然后对于操作将所有区间分为5类(T为已执行操作个数): 1.被修改,那么$f[i ...

  6. Windows系统及硬件信息读取

    Windows桌面端开发常常会需要读取系统信息或硬件信息作为用户标识,比如用于确认该设配是否已经激活程序.也可以使用随机生成的UUID来作为唯一标识,但是如果重装系统或重装软件都有可能导致标识丢失,因 ...

  7. bean注解

    1.beans.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi=&qu ...

  8. 【Mysql】三大日志 redo log、bin log、undo log

    @ 目录 redo log(物理日志\重做日志) binlog(逻辑日志/归档日志) update语句执行流程 Uodolog(回滚日志/重做日志) undo log+redo log保证持久性 re ...

  9. 【Java面试题】-- Java String

    Java String 2019-11-02  17:40:45  by冲冲 1.String的内存位置 String是定义在 java.lang 包下的一个类.它不是基本数据类型.String是不可 ...

  10. 一个没被spring管理的类怎么创建对象并使用里面的方法

    一个对象new出来的,如果不是构造器注入@Data 也不好使啊,尝试构造器注入一下,或者set进去 第二次尝试使用这个. 向这种只能构造器注入或者通过上面的set方法来注入了,component是不好 ...