一、docker简介
容器( container-based )虚拟化方案,充分利用了操作系统本身已有的机制和特性,以实现轻量级的虚拟化(每个虚拟机安装的不是完整的虚拟机),甚至有人把他称为新一代的虚拟化技术, Docker 无疑就是其中的佼佼者
在一台服务器上同时运行上百个虚拟机,肯定会被认为是痴人说梦,而在一台机器上同时运行一千个 Docker 容器,这已成为现实
Docker 的目标
Build,Ship and Run Any App,Anywhere— 即通过对应用组件的封装 (Packaging), 发布(Distribution), 运行
(runing) 等生命周期的管理 , 达到应用组件级别的”一次封装 , 到处运行”,
二、docker的特点
优点:
启动快,资源占用小 , 资源利用高,快速构建标准化运行环境
创建分布式应用程序时快速交付和部署,更轻松的迁移和扩展,更简单的更新管理
局限:
Docker 是基于 Linux 64bit 的,无法在 windows/unix 或 32bit 的 linux环境下使用
LXC 是基于 cgroup 等 linux kernel 功能的,因此 container 的 guest 系统只能是linux
隔离性相比 KVM 之类的虚拟化方案还是有些欠缺,所有 container 公用一部分的运行库
管理相对简单,主要是基于 namespace 隔离
cgroup 的 cpu 和 cpuset 提供的 cpu 功能相比 KVM 的等虚拟化方案相比难以度量 ( 所以 dotcloud 主要是按内存收费 )
docker 对 disk 的管理比较有限
container 随着用户进程的停止而销毁, container 中的 log 等用户数据不便收集
三、docker与虚拟机比较
启动快比虚拟机 , 可以秒级启动
对资源占用小 , 宿主机上可运行千台容器
方便用户获取 , 分布 , 和更新应用镜像 , 指令简单 , 学习费用低
通过 Dockerfile 配置文件来灵活的自动创建和部署镜像 & 容器 , 提高工作效率
Docker 除了运行其中应用外 , 基本不消耗其他系统资源 , 保证应用性能同时 , 尽量减小系统开销