09-09 11:26 docker 学习 初识docker与容器 #### **什么是Docker** Docker是基于Go语言的开源([https://github.com/docker](https://github.com/docker "https://github.com/docker"))容器项目,诞生于2013年初,最初发起者是dotCloud公司。 Dcoker的构想是要实现“Build,Ship and Run Any App,Anywhere”即通过对应用的封装、分发(Packaging)、部署(Distribution)、运行(deployment)生命周期进行管理、达到应用组件级别的“一次封装,到处运行”。 ------------ #### **为什么要使用Docker** 更快速的交付和部署。快速的创建和删除容器,实现快速迭代,节约开发、测试、部署大量时间。只用使用镜像来快速构建一套标准的开发环境,就可以确保在生产环境无缝运行。 更高效的资源利用。运行Docker容器不需要额外的虚拟化管理程序的支持,Docker是内核级的虚拟化,可以使用更高的性能,同事对资源的额外需求很低。与传统的虚拟机方式相比,Docker的性能要提高1~2个数量级。 更轻松的迁移和扩展。Docker容器几乎可以再任意平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等,同事支持主流操作系统发行版本。 更简单的更新管理。使用Dockerfile,只需要小小的配置修改,就可以替代以往大量的更新工作。所有的修改都可以增量的方式被分发和更新,从而实现自动化并且高效的容器管理。 ------------ #### **Docker与虚拟机的比较** |特性 |Docker容器 |虚拟机 | | ------------ | ------------ | ------------ | |启动速度 |秒级 |分钟级 | |性能 |接近原生 |较弱 | |内存代价 |很小 |较多 | |硬盘使用 |一般为MB |一般为GB | |运行密度 |单机支持上千个容器 |一般几十个 | |隔离性 |安全隔离 |完全隔离 | |迁移性 |优秀 |一般 | ------------ #### **Docker与虚拟化** 虚拟化是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存以及存储等,予以抽象、转换后呈现出来,目的主要是为了在同一个主机上同时运行多个系统或应用,从而提高系统资源的利用率,并且能带来降低成本、方便管理和容错等好处。 从大类分,虚拟化技术可分为基于硬件的虚拟化和基于软件的虚拟化。 ###### 软件虚拟化可只要细分为 完全虚拟化。 硬件辅助虚拟化。 部分虚拟化。 超虚拟化。 操作系统级虚拟化。 传统方式是在硬件层面实现虚拟化,需要有额外的虚拟机管理应用和虚拟机操作系统层。而Docker和其他容器技术一般都属于操作系统级虚拟化,不需要额外的supervisor支持,直接复用本地主机的操作系统,因此更加轻量级。