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核心技术的更多相关文章

  1. Docker 核心技术与实现原理

    提到虚拟化技术,我们首先想到的一定是 Docker,经过四年的快速发展 Docker 已经成为了很多公司的标配,也不再是一个只能在开发阶段使用的玩具了.作为在生产环境中广泛应用的产品,Docker 有 ...

  2. 深入浅出Docker(一):Docker核心技术预览

    Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上, 基于Go语言开发并遵从Apache 2.0协议开源.Docker提供了一种在安全.可 ...

  3. 后端技术杂谈10:Docker 核心技术与实现原理

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  4. docker核心技术(2)

    鸟瞰容器生态系统 一谈到容器,大家都会想到 Docker. Docker 现在几乎是容器的代名词.确实,是 Docker 将容器技术发扬光大.同时,大家也需要知道围绕 Docker 还有一个生态系统. ...

  5. 【转】Docker 核心技术与实现原理

    转自:https://draveness.me/docker 提到虚拟化技术,我们首先想到的一定是 Docker,经过四年的快速发展 Docker 已经成为了很多公司的标配,也不再是一个只能在开发阶段 ...

  6. Docker 核心技术之Docker Compose

    Docker Compose 简介 Docker Compose是什么? Docker Compose是一个能一次性定义和管理多个Docker容器的工具. 详细地说: Compose中定义和启动的每一 ...

  7. Docker 核心技术之Dockerfile

    Dockerfile 简介 什么是Dockerfile Dockerfile其实就是根据特定的语法格式撰写出来的一个普通的文本文件 利用docker build命令依次执行在Dockerfile中定义 ...

  8. Docker 核心技术之仓库

    Docker 仓库简介 什么是Docker仓库 Docker仓库就是存放docker镜像并有docker pull方法下载的云环境 Docker仓库分为公有仓库和私有仓库. 公有仓库指Docker H ...

  9. Docker 核心技术之数据管理

    Docker 数据卷简介 为什么用数据卷 宿主机无法直接访问容器中的文件 容器中的文件没有持久化,导致容器删除后,文件数据也随之消失 容器之间也无法直接访问互相的文件 为解决这些问题,docker加入 ...

随机推荐

  1. C++中 相对路径与绝对路径 斜杠 '/' 与反斜杠 '\'的区别

    文件路径正斜杠和反斜杠 正斜杠,又称左斜杠,符号是"/":反斜杠,也称右斜杠,符号是"\".文件路径的表示可以分为绝对路径和相对路径: 1.绝对路径表示相对容易 ...

  2. Javacore分析(转载)

    本文转自(http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1406_tuzy_javacore/1406_tuz ...

  3. python--fnmatch

    import fnmatch ''' 这个库专门是用来做文件名匹配的,可以使用通配符如下 * 匹配任何数量的任意字符 ? 匹配单个数量的任意字符 [seq] 匹配seq中的任意字符 [!seq] 匹配 ...

  4. 【 HAProxy 】学习笔记

    一.haproxy的功能: HAProxy vs LVS        HAProxy支持tcp和http两种代理模式,而lvs仅支持tcp代理模式        HAProxy相比LVS的使用要简单 ...

  5. WPF第三方控件盘点

    WPF统一的编程模型.语言和框架,实现了界面设计人员和开发人员工作可以分离的境界,鉴于WPF强大的优势,且一直是开发者关注的地方,下面和大家分享基于WPF项目开发需要用到的第三方控件,包括业界最受好评 ...

  6. hdu 3006(状态压缩)

    The Number of set Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  7. api接口思路介绍

    现在很流行api了,但各种api做法不一样,下面我整理了一些自己的想法,也是看了各大门户网站开放的api应用想到的,与大家分享分享,高手跳过.   API(Application Programmin ...

  8. UTC时间

    世界的每个地区都有自己的本地时间,在Internet及无线电通信时,时间的统一非常重要! 整个地球分为二十四时区,每个时区都有自己的本地时间.在国际无线电通信中,为统一而普遍使用一个标准时间,称为通用 ...

  9. apache httpd反向代理配置

    apache httpd 2.4.6反向代理的配置,用户访问A server的8080端口,后台会自动请求Bserver的一个端口. 例如,用户访问ip-172-31-28-175的8080端口,后台 ...

  10. cogs 服务点设置

    3. 服务点设置 ☆   输入文件:djsa.in   输出文件:djsa.out   简单对比时间限制:1 s   内存限制:128 MB 问题描述为了进一步普及九年义务教育,政府要在某乡镇建立一所 ...