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加入 ...
随机推荐
- VC++/MFC中调用CHM帮助文档的方法
转载:http://blog.csdn.net/hediping9811/article/details/23341387 (1)用Word编辑好帮助文档,并保存为网页格式,如mhtml格式. (2) ...
- C++格式输出控制
#include<iostream> #include<string> #include<vector> #include<set> #include& ...
- strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用。
strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用. http://bbs.51cto.com/thread-1106891-1.html
- sphinx-python文档化
概述 下文讲述使用sphinx自动生成reStructuredText python API文档的简单过程. 配置流程 安装依赖 $ pip install sphinx blurb python-d ...
- 【hdoj_1049】Climbing Worm
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1049 以 上升-下降 一次为一个周期,一个周期时间为2分钟,每个周期上升距离为(u-d).先只考虑上升,再 ...
- nodejs 服务器重新启动
在 我们开发node 应用的时候,一但你的应用已经启动了,这个时候如果你修改了服务端的文件,那么要是这个修改起作用,你必须手动停止服务然后再重新启动,这在开发过程中无 疑是很烦人的一件事,最好是有一个 ...
- HDU 1427 速算24点【数值型DFS】
速算24点 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- POJ 1321 棋盘问题 (DFS + 回溯)
题目链接:http://poj.org/problem?id=1321 题意:中文题目,就不多说了...... 思路: 解题方法挺多,刚开始想的是先从N行中选择出来含有“#”的K行,再在这K行中放置K ...
- 洛谷——P1088 火星人
P1088 火星人 题目描述 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法.这种交流方法是这样的,首先,火星人把一个非常 ...
- dutacm.club 1094: 等差区间(RMQ区间最大、最小值,区间GCD)
1094: 等差区间 Time Limit:5000/3000 MS (Java/Others) Memory Limit:163840/131072 KB (Java/Others)Total ...