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++格式输出控制

    #include<iostream> #include<string> #include<vector> #include<set> #include& ...

  2. Java坦克大战 (六) 之增加可玩性

    本文来自:小易博客专栏.转载请注明出处:http://blog.csdn.net/oldinaction 在此小易将坦克大战这个项目分为几个版本,以此对J2SE的知识进行回顾和总结,希望这样也能给刚学 ...

  3. [xampp] phpmyadmin 设置登录密码

    $ cd /opt/lampp/bin $ ./mysqladmin -u root password 'new_password' $ vim ../phpmyadmin/config.inc.ph ...

  4. HDU 6216 A Cubic number and A Cubic Number【数学思维+枚举/二分】

    Problem Description A cubic number is the result of using a whole number in a multiplication three t ...

  5. 集训考试题tents

    题目描述Pb 去郊游啦!他来到一块空地打算在这里搭一个帐篷.但是,帐篷的四个支撑点不能在落在任何位置上,而只能落在一些固定点上.现在,他找到地面上有 N 个点可以支撑帐篷.(四个支撑点必须围成一个矩形 ...

  6. HDU1142 A Walk Through the Forest(dijkstra)

    A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Jav ...

  7. Linux命令之crontab

    crontab [-u user] file crontab [-u user] [-l | -r | -e] [-i] [-s] crontab命令被用来提交和管理用户需要周期性执行的任务,与win ...

  8. websocket、文件上传

    支持情况: 浏览器实现了websocket的浏览器:Chrome Supported in version 4+ Firefox Supported in version 4+ Internet Ex ...

  9. [HDU5739]Fantasia(圆方树DP)

    题意:给一张无向点带有权无向图.定义连通图的权值为图中各点权的乘积,图的权值为其包含的各连通图的权和.设z_i为删除i点后图的权值,求$S = (\sum\limits_{i=1}^{n}i\cdot ...

  10. [CTSC2017]吉夫特(Lucas定理,DP)

    送70分,预处理组合数是否为偶数即可. 剩下的数据,根据Lucas定理的推论可得当且仅当n&m=n的时候,C(n,m)为奇数.这样就可以直接DP了,对于每个数,考虑它对后面的数的影响即可,直接 ...