标签:检索 空间 复制 高密度 lxc 硬盘 规则 用户空间 配置
可能写的不是很完美,需要大家指正修改和意见(谢谢合作)
docker的入门:
docker的好处:
1.更快交付你的应用(Faster delivery of your applications)
2.让部署和测试更加简单(Deploying and scaling more easily)
3.实现更高密度和更多的负载 (Achieving higher density and running more workloads)
docker的目标:
docker的目标是实现轻量级的操作系统虚拟化解决方案,创建软件程序可移植的轻量容器
docker底层实现
简介Cgroups:
Cgroups是linux内核提供的一种可以限制单个进程或者多个进程所使用资源的机制,可以对cpu,内存等资源实现精细话的控制,目前越来越火的轻量级容器docker就是使用了Cgroups提供的资源限制能力来完成cpu,内存部分的资源控制
另外,开发者也可以使用Cgoups提供的精细化控制能力,限制某一个或者某一组进程的资源调用,比如在一个部署web服务器也部署可后端计算模块的八核服务器上,可以使用Cgroups限制web server仅可以使用计算计6核,把剩下的两核给后端计算模块
本文从以下四个方面描述cgroups的原理及用法:
1.Cgroups概念及原理
2.Cgroups文件系统概念及原理
3.Cgroups使用方法介绍
4.Cgroups实践中的例子
概念及原理:
Cgroups子系统
cgroups的全称是control(管理) groups,cgroups为每种可以控制的资源定义了一个子系统,典型的子系统介绍如下:
这里边的每一个子系统都需要与内核的其他模块配合来完成资源控制,比如对cpu资源的限制是通过进程调度模块根据cpu子系统的配置完成的
对内存资源限制的规则是内存模块根据memory子系统配置来完成的
对网络数据包的控制则需要traffic control子系统来配合完成
本文不会讨论内核是如何使用每一个子系统来实现资源的限制,而是重点放在内核是如何把 cgroups 对资源进行限制的配置有效的组织起来的,和内核如何把cgroups
配置和进程进行关联的,以及内核是如何通过 cgroups 文件系统把cgroups的功能暴露给用户态的。
深入Cgroups
http://blog.jobbole.com/88836/
http://www.ttlsa.com/linux/use-cgroups-to-limit-mongodb-memory-usage/
docker和虚拟机的对比:
虚拟机;vmware需要模拟整台服务器包括硬件,每台虚拟机都需要有自己的操作系统,
虚拟机只要被开启,那么分配给他的资源他将全部使用,每一台虚拟机包括应用,必要的二进制和库以及一个完整的用户操作系统
容器:容器是和宿主机操作系统共享硬件资源及操作系统,可以实现资源的动态分配,在容器内包含应用和其所有的依赖包,但是与其他容器共享内核,容器在宿主机在用户空间以分离的进程运行
优点:
docker的特性:
交互式shell:docker可以分配一个虚拟终端并关联到任何容器的标准输入上,列入运行一个一次性交互shell
文件系统隔离:每个进程容器运行在完全独立的根文件系统里
写时复制:采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间
资源隔离:可以使用cgroups为每个进程分配不同的系统资源
网络隔离:每个进程容器运行在自己的网络空间里,拥有自己的虚拟接口和IP地址
日志记录:docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索
变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用已创建更多的容器,无需使用模板或手动配置
docker几个引擎(主要组建):
docker运行流程:
当我们想运行一个容器的时候docker会:
标签:检索 空间 复制 高密度 lxc 硬盘 规则 用户空间 配置
原文地址:https://www.cnblogs.com/yaozhiqiang/p/9790243.html