赞
踩
DockerDocker是美国几个年轻人创建了一个公司dotCloud,做一些关于Paas的云计算服务和LXC有关的容器技术,Docker开发与2010年,2013 年开源火起来,2014年出版第一版docker1.0版本,Docker 是一个开源容器引擎
,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,也就是常说的隔离机制,值得一提的是Docker是go
语言开发的
一个完整的Docker有以下几个部分组成:
docker相比KVM之类最明显的特点就是启动快,资源占用小。
构建隔离的标准化的运行环境,轻量级的PaaS(如dokku), 构建自动化测试和持续集成环境,以及一切可以横向扩展的应用(尤其是需要快速启停来应对峰谷的web应用)。
构建标准化的运行环境,现有的方案大多是在一个baseOS上运行一套puppet/chef,或者一个image文件,其缺点是前者需要base OS许多前提条件,后者几乎不可以修改(因为copy on write 的文件格式在运行时rootfs是read only的)。并且后者文件体积大,环境管理和版本控制本身也是一个问题。
标准化构建方法(buildfile)和良好的REST API,自动化测试和持续集成/部署能够很好的集成进来
Docker并不是全能的,设计之初也不是KVM之类虚拟化手段的替代品,简单总结几点:
Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用
LXC是基于cgroup等linux kernel功能的,因此container的guest系统只能是linux base的
隔离性相比KVM之类的虚拟化方案还是有些欠缺,所有container公用一部分的运行库
网络管理相对简单,主要是基于namespace隔离
cgroup的cpu和cpuset提供的cpu功能相比KVM的等虚拟化方案相比难以度量(所以dotcloud主要是按内存收费)
Docker对disk的管理比较有限
container随着用户进程的停止而销毁,container中的log等用户数据不便收集
比较 | Docker 容器 | Vm虚拟机 |
---|---|---|
操作系统 | 与主机共享OS | 宿主机OS上运行虚拟机OS |
存储大小 | 镜像小,便于存储和运输 | 镜像庞大 |
运行性能 | 几乎无额外性能损失 | 操作系统额外的cpu,内存消耗 |
移植性 | 轻便,灵活,适应linux | 笨重,与虚拟化技术耦合度高 |
部署速度 | 快速,秒级 | 较慢 |
隔离级别 | 进程之间的隔离 | 操作系统之间的隔离 |
安全性 | 低于vm虚拟机 | 高于Docker容器 |
硬件亲和性 | 面向软件开发者 | 面向硬件开发者 |
(1)docker有着比虚拟机更少的抽象层。
docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上、docker有明显优势。
(2)docker利用的是宿主机的内核,而不需要 宿主机OS。 新建一个docker容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。避免引寻、加载操作系统内核等比较费时费资源的过程;新建一个VM虚拟机时,虚拟机软件需要加载 宿主机OS,整个新建过程是分钟级别的。而docker由于直接利用宿主机的OS,则省略了返个过程,新建一个docker容器只需要几秒钟。
传统方式: 一堆的帮助文档,安装程序
Docker: 打包镜像文件发布测试,一键运行
使用Docker之后,我们部署应用就和搭积木一样
项目打包成一个镜像文件,扩展,服务器A!
在容器技术之后,开发运维环境一致
Docker是内核级别的虚拟化技术,可以吧计算机的资源利用到极致
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。