本文摘自 原贴链接
Docker是一个开源的应用容器引擎,采用沙箱的机制,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
虚拟化是一种资源管理技术,将计算机上的各种实体资源进行抽象,重新呈现出 来,打破了实体结构之间不可切割的障碍,使用户以更加合理的组态使用资源。
docker与VMware的比较
docker可以完成虚拟机可以完成的所有功能,并且Vm所有虚拟机在创建的时候回虚拟独立的系统内核,而docker所有的虚拟机共用主机的系统内核,节约了虚拟环境系统部署的资源,将更好的性能提供给了应用,所以docker占用资源小,比虚拟机开启更快,更方便。
关于Docker的一些名词
- Server 服务器
- HOST os 主机系统
- HYPErvisor 虚拟机管理程序
- DOCKER engine docker引擎
- GUEST os虚拟环境系统
- BINS/Libs 开发依赖包
- APP 应用功能
- Register:仓库,用来存放docker 镜像。
- Image:镜像,就是封装好的docker实例,包含要运行应用的依赖环境和程序,但是image镜像是只读的,无法进行直接操作。
- Container:容器,用来打开,并且使用镜像
Docker的优点:
配置快
提供独立的开发环境,便于开发, 由于docker可以在各种各样的环境中使用,而基础架构不要求与应用程序的环境相关联,因此不存在兼容性问题。提高工作效率
这是一种类似于集装箱的概念,在开发之初就将项目放到一个类似于集装箱的独立环境进行开发,到部署的时候只是部署集装箱环境,而集装箱环境已经被所有的系统指定了统一标准,不存在兼容问题,所以可以提高工作效率。应用隔离
docker提供用于在隔离环境中运行应用程序的容器。 每个容器都是独立,并允许执行任何类型的应用程序,并且不存在入侵和病毒感染的问题,甚至可以使用沙箱进行病毒隔离。云集
它是docker容器的集群和调度工具。 Swarm使用Docker API作为其前端,这有助于我们使用各种工具来控制它。 它还可以将docker主机集群控制为一个虚拟主机。 这是一个用于启用可插拔后端的自组织引擎组。路由网
它能够将可用节点上已发布端口的传入请求路由到活动容器,实现连接。服务
服务是允许指定集群内的容器状态的任务列表。 每个任务表示一个应该运行的容器的一个实例,并且Swarm在节点之间调度它们。安全管理
安全性和管理应当是一个高优先级的考虑因素;企业用户不应再把它们当作应用程序迁移至容器的最后一步。反之,企业必须从一开始就做好安全性和管理的规划,把它们的功能纳入应用程序的开发过程中,并在应用程序运行过程中积极主动地关注这些方面。
Docker的局限:
- Docker是基于Linux64 bit的,无法在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等用户数据不便收集。