Docker核心技术
Docker核心技术
1、cgroup
即controller group,其重要概念是子系统,首先挂载子系统,然后才有control group。例如cpu子系统,挂载至系统之后,创建一个cgroup节点,之后将要限制的进行id写入,然后写入限制的cpu资源描述,完成对该进程cpu资源的控制。在很多领域可以代替虚拟化技术进行资源隔离限制。
2、lxc
即linux containers,是一种基于容器的操作系统级别的虚拟化技术。借助namespace的隔离机制和cgroup的资源控制来控制和创建容器。
namespace命名空间类似各大语言中的概念,每个namespace中创建的资源都是独立的,互相看不到的。
且是基于一个共享kernel的虚拟化技术,创建容器的时候共享host主机的kernel内核,这样可以提高性能和速度。
但是因为共享内核,所有容器的内核版本都是一样的,没有kvm虚拟技术那么强大,因为kvm技术是会创建独立kernel的,可以在独立的内核上进行很多独立操作。
3、aufs
一种层状的文件系统,在修改文件的时候,aufs会先创建一个副本,在副本上进行修改保存之后,这个副本成为源文件的一个上层文件目录,与docker中镜像与容器的概念一致。
image是不可修改的(原文件),要对其进行更新,只能根据这个image启动一个container(副本),在container中进行操作之后保存成为一个新的image(上层文件)。
然后而并不是每次形成一个新的image都是完全的复制原image一份,宗旨是:相同的公用,不相同的才独立保存。
也就是说,一个新的image中(例如apache服务器),其依赖的各种library都是一个debain image提供的,只有apache服务器的安装部分是其独有的。
使用建议
* 一个container中运行尽量少的app(例如1个);
* 不要什么都往container中装,只装必要的;
* container内不建议有运行期需要修改的配置文件;
* 尽量重用公开的基础镜像;
使用docker命令其实就是和docker daemon打交道,可以将其理解为一个大container,其中运行着各种各样用户启动的container。
/var/lib/docker/graph 中存储着image的分层信息
/var/lib/dokcer/devicemapper/devicemapper/data 存储了image和container的二进制数据文件
/var/lib/docker/devicemapper/devicemapper/matadata 存储了相关元数据
Volume
aufs系统每次修改文件都先复制副本,然后在副本上操作,这样一来对于频繁的写操作会消耗大量资源,这时候应该使用Volume。
直接和本地文件系统关联,和本地写文件没有差别。
高频写文件例子:日志,数据库等。
可将多个容器的Volume挂在到宿主机的同一目录实现文件共享。
–volume-from 容器名,直接挂载到该容器挂载的目录,存在的意义:使用-v是写死的路径,不适合移植,而且在Dockerfile中是不允许这么做的,另外别的容器可能是不知道这个挂载路径的。
Link
–link 容器名:别名
会在容器/etc/hosts中生成一条ip映射记录,并且在防火墙中会生成相应的规则
shipyard
cadvisor
作者:@小黑
Docker核心技术的更多相关文章
- Docker 核心技术与实现原理
提到虚拟化技术,我们首先想到的一定是 Docker,经过四年的快速发展 Docker 已经成为了很多公司的标配,也不再是一个只能在开发阶段使用的玩具了.作为在生产环境中广泛应用的产品,Docker 有 ...
- 深入浅出Docker(一):Docker核心技术预览
Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上, 基于Go语言开发并遵从Apache 2.0协议开源.Docker提供了一种在安全.可 ...
- 后端技术杂谈10:Docker 核心技术与实现原理
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- docker核心技术(2)
鸟瞰容器生态系统 一谈到容器,大家都会想到 Docker. Docker 现在几乎是容器的代名词.确实,是 Docker 将容器技术发扬光大.同时,大家也需要知道围绕 Docker 还有一个生态系统. ...
- 【转】Docker 核心技术与实现原理
转自:https://draveness.me/docker 提到虚拟化技术,我们首先想到的一定是 Docker,经过四年的快速发展 Docker 已经成为了很多公司的标配,也不再是一个只能在开发阶段 ...
- Docker 核心技术之Docker Compose
Docker Compose 简介 Docker Compose是什么? Docker Compose是一个能一次性定义和管理多个Docker容器的工具. 详细地说: Compose中定义和启动的每一 ...
- Docker 核心技术之Dockerfile
Dockerfile 简介 什么是Dockerfile Dockerfile其实就是根据特定的语法格式撰写出来的一个普通的文本文件 利用docker build命令依次执行在Dockerfile中定义 ...
- Docker 核心技术之仓库
Docker 仓库简介 什么是Docker仓库 Docker仓库就是存放docker镜像并有docker pull方法下载的云环境 Docker仓库分为公有仓库和私有仓库. 公有仓库指Docker H ...
- Docker 核心技术之数据管理
Docker 数据卷简介 为什么用数据卷 宿主机无法直接访问容器中的文件 容器中的文件没有持久化,导致容器删除后,文件数据也随之消失 容器之间也无法直接访问互相的文件 为解决这些问题,docker加入 ...
随机推荐
- HTTP===返回结果的HTTP状态码
HTTP 状态码负责表示客户端 HTTP 请求的返回结果.标记服务器端的处理是否正常.通知出现的错误等工作. 1.状态码告知从服务器端返回的请求结果 状态码的职责是当客户端向服务器端发送请求时,描述返 ...
- 病毒&烦人的幻灯片
<病毒>传送门 <烦人的幻灯片>传送门 病毒 描述 有一天,小y突然发现自己的计算机感染了一种病毒!还好,小y发现这种病毒很弱,只是会把文档中的所有字母替换成其它字母,但并不改 ...
- 【C++】隐式类型转换和 explicit关键字
来自:黄邦勇帅 1. 当类中带有一个参数的构造函数时,将执形对象的隐式转换,比如有类 A,有一个带有一个参数的构造函数A(int i){}则当出现语句A m=1;就会调用带有一个参数的构造函数来创建对 ...
- 让IE6/IE7/IE8支持CSS3属性的8种方法介绍
我们都知道,IE浏览器暂不支持CSS3的一些属性.国外的工程师们,不安于此现状,他们总是尽量使用一些手段使IE浏览器也能支持CSS3属性,我觉得这些都是很有意义,很有价值的工作,可以推动整个技术领域的 ...
- 静态页面表单中js验证
笔记: 1. onblur事件:onblur 事件会在对象失去焦点时发生.http://www.w3school.com.cn/jsref/event_onblur.asp onkeyup事件:onk ...
- HDU 1556 Color the ball【差分数组裸题/模板】
N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的"小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一 ...
- CF 996B World Cup 【找规律/模拟】
CF [题意]:圆形球场有n个门,Allen想要进去看比赛.Allen采取以下方案进入球场:开始Allen站在第一个门,如果当前门前面有人Allen会花费单位时间走到下一个门,如果没人Allen从这个 ...
- 学习LSM(Linux security module)之四:一个基于LSM的简单沙箱的设计与实现
嗯!如题,一个简单的基于LSM的沙箱设计.环境是Linux v4.4.28.一个比较新的版本,所以在实现过程中很难找到资料,而且还有各种坑逼,所以大部分的时间都是在看源码,虽然写的很烂,但是感觉收获还 ...
- 数据库的语言——SQL
DBMS 是一种系统软件,我们要与它交互的时候就必须使用某种语言,在数据库发展初期每一种DBMS 都有自己的特有的语言,不过逐渐的SQL 成为了所有DBMS 都支持的主流语言.SQL 是专为数据库而建 ...
- bzoj DZY Loves Math V
Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 509 Solved: 284[Submit][Status][Discuss] Descriptio ...