docker:docker是众多容器技术中的佼佼者,是基于go语言实现的开源容器项目,同时,docker项目的全部开源代码均在http://github.com/docker项目仓库中进行维护
docker的构想是要实现“Build,ship and run any app,anywhere”;即通过对应用的封装,分发,部署,运行生命周期进行管理,达到应用组件级别的“一次封装,倒是运行”,这里的应用组件,既可以是一个web应用,一个编译环境,也可以是一个数据库平台服务,甚至是一个操作系统集群
1.为什么要使用docker
1.1更快速的交付和不适;更高效的资源利用;更轻松的迁移和扩展;更简单的更新管理
1.2docker与虚拟机相比:dockers容器很快,启动和停止可以在秒级实现,这比传统的虚拟机方式要快的多;docker容器对系统资源需求很少,一台主机上可以运行数千个Docker容器;docker通过类似git设计理念的操作来方便用户获取,分发和更新应用镜像,存储复用,增量更新;docker通过dockerfile至此灵活的自动化创建和部署机制,以提高工作效率,并标准化流程
1.3docker除了运行其中的应用外,基本不消耗额外的系统资源。传统虚拟机方式运行N个不同的应用就要启用N个虚拟机(每个虚拟机需要单独分配独占的内存,磁盘等资源),而docker只需要启动N个隔离的“很薄的”容器,并将应用放进容器内即可。应用获得是接近原生的运行性能
特性 | 容器 | 虚拟机 |
启动速度 | 秒级 | 分钟级 |
性能 | 接近原生 | 较弱 |
内存代价 | 很小 | 较多 |
磁盘使用 | 一般为MB | 一般为GB |
运行速度 | 单机支持上千个容器 | 一般几十个 |
隔离性 | 安全隔离 | 完全隔离 |
迁移性 | 优秀 | 一般 |
docker和虚拟机的区别
传统方式在硬件层面实现虚拟化,需要有额外的虚拟机管理应用和虚拟机操作系统层。Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,因此更加轻量级