docker底层核心技术学习

以下总结一些本人自学docker过程中的一些笔记,不保证内容的准确性

1. 云平台的三个层次服务

  • IaaS 基础设施即服务

通过互联网提供数据中心、基础架构硬件和软件资源,还可以提供服务器、操作系统、磁盘存储、数据库和/或信息资源。

  • PaaS 平台即服务

提供了基础架构,软件开发者可以在这个基础架构之上建设新的应用,或者扩展已有的应用,同时却不必购买开发、质量控制或生产服务器。

  • SaaS 软件即服务

一种软件分布模式,在这种模式下,应用软件安装在厂商或者服务供应商那里,用户可以通过某个网络来使用这些软件,通常使用的网络是互联网。


2. docker解决的问题

docker是一种虚拟化技术。它的出现解决了后端的开发和运维阶段中开发环境和生产环境一致的问题。通过Docker我们可以将程序运行的环境纳入到版本控制中,排除因为环境的不同运行结果的可能。

简单说就是以下几点:

  • 高效资源利用
单台极其可部署多个应用
应用之间互相隔离
应用之间不会发生资源抢占
  • 一次编译,随处运行

3.docker的实现原理

docker底层核心技术从三方面入手隔离容器
1. namespace --- 系统
2. cgroup -- 资源
3. AUFS --文件系统

3.1Namespaces 命名空间

linux Namespaces

在Linux系统中,可以同时存在多用户多进程,系统的整体资源是有限的,Namespaces机制提供了一种资源隔离的方案。

PID,IPC,Network等系统资源不再是全局性的,而是属于某个特定的Namespace。每个namespace下的资源对于其他namespace下的资源都是透明,不可见的。因此在操作系统层面上看,就会出现多个相同pid的进程。系统中可以同时存在两个进程号为0,1,2的进程,由于属于不同的namespace,所以它们之间并不冲突。

namespace隔离

简单理解就是每个namespace看上去就像一个单独的linux系统。
从上图也可以看出,存在一个基础的父namespace,子A和子B相互独立隔离开来,父Namespace可以查看子A、子B中的所有进程

  • Namespace隔离了什么?

目前实现的内容包括以下六种类型

Namespace类型 系统调用参数 内核版本
Mount namespaces CLONE_NEWNS 2.4.19
UTS namespaces CLONE_NEWUTS 2.6.19
IPC namespaces CLONE_NEWIPC 2.6.19
PID namespaces CLONE_NEWPID 2.6.24
Network namespaces CLONE_NEWNET 2.6.29
User namespaces CLONE_NEWUSER 3.8

3.2 cgroup介绍

Docker容器使用namespace来隔离运行环境,这样使容器中的进程看起来像使一个独立环境中运行一样。
但是只有namespace还不够!因为这些进程还是可以不受限制的使用系统资源,这样如果一个进程占用太多资源会影响其它进程,如果系统的资源被耗尽,linux还会触发OOM,这样会杀掉一些进程。因此,为了让容器更加可控,使用cgroup来限制容器中的进程允许使用的系统资源。

  • 原理

linux cgroup可以为系统中所运行任务(进程)的用户定义组群分配资源。

比如CPU时间、系统内存、网络宽带等资源的组合。可以监控管理员配置的cgroup,拒绝cgroup访问某些资源,也可以在运行的系统中动态配置cgroup。也就是说它以一组进程为目标进行系统资源分配和控制。

  • 提供的功能
  1. Resource limitation: 限制资源使用,比如内存使用上限以及文件系统缓存限制
2. Prioritization: 优先级控制,比如:CPU利用和磁盘IO吞吐
3. Accounting: 一些审计或统计
4. Controll: 挂起进程,恢复执行进程

使用 cgroup,系统管理员可更具体地控制对系统资源的分配、优先顺序、拒绝、管理和监控。可更好地根据任务和用户分配硬件资源,提高总体效率.

3.3 UnionFS和AUFS以及overlay2

UnionFS使一种为Linux,FreeBSD,NetBSD操作系统设计的,它能把其它文件系统联合到一个联合挂载点的文件系统服务。
它使用branch把不同文件系统的文件和目录透明地覆盖,形成一个单一一致的文件系统。

AUFS完全重写了UnionFS1.X,主要目的使为了可靠性和性能,并且引入了一些新的功能,比如可写分支的负载均衡。

docker选用的第一种存储驱动是AUFS。具有快速启动容器高效利用存储和内存的优点,直到现在AUFS仍然是Docker支持的一种存储驱动类型。

后来docker优选overlay2

4. docker daemon

Docker守护进程(Docker Daemon)。它是运行在操作系统之上的后台进程,负责管理Docker容器。Docker守护进程可以直接与主操作系统进行通信,为各个Docker容器分配资源;它还可以将容器与主操作系统隔离,并将各个容器互相隔离。

以上都是概念和干货,是为了加深对docker的理解而学习到的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,820评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,648评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,324评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,714评论 1 297
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,724评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,328评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,897评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,804评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,345评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,431评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,561评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,238评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,928评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,417评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,528评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,983评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,573评论 2 359