有酒则有诗,无酒则无诗。
对于Docker的认识应该是两年前的事儿了,记得当时有个项目是用Docker进行构建,然后发布。当时并不了解Docker只是迫于形势,简单学习了Docker的几个概念,容器
,镜像
,仓库
...
Docker
Docker是基于go语言实现的开源容器项目。诞生于2013年,发起者是dotCloud公司。其主要构想是Build,Ship,and Run Any App , AnyWhere
。通过对应用的封装(Packaging)
,分发(Distribution)
,部署(Deployment)
,运行(Running)
生命周期进行管理,达到应用级别的一次封装,处处运行
。
这里的应用,既可以是一个web应用,一个编译环境,也可以是一套数据库服务平台,甚至是一个操作系统或集群。
Docker的好处
假设用户基于常见的LAMP(linux apache maysql php)
来构建网站。传统做法:安装apache,mysql,php
以及依赖的环境,然后进行配置,之后进行开发调试,调试完成后进行部署。如果项目较多,则整个流程相当繁琐。
另外,如果日后服务器需要迁移,则需要对每个应用都进行迁移和调试,生产效率低下。究其原因,是这些应用直接运行在底层操作系统上,无法保证统一应用在不同环境中表现一致。
Docker提供了一种简单的方式,通过容器打包应用,解耦应用和平台环境。这意味着迁移的时候,只需在新的服务器上启动容器即可。这样一来,既提高了生产效率,又降低了迁移过程中的风险。
同时对于开发和运维来说,Docker又有下面几个优势。
- 更快的交付和部署
对于开发人员来说,可以使用Docker镜像来快速构建一套标准的开发流程,开发完成后,开发,测试及运维人员直接使用相同的环境部署代码。同时Docker可以快速的创建,删除容器,实现快速开发迭代,节约开发,测试及部署时间。
- 更高的资源利用效率虚拟化管理程序,Docker是内核级的虚拟化,可以实现性能的提升,同时对资源的额外需求较少。
Docker的运行不需要额外的
- 更轻松的迁移和扩展
Docker几乎可以运行在任意平台,包括物理机,虚拟机,公有云,私有云,个人电脑及服务器等。同时支持主流的操作系统。
- 更简单的更新管理
使用Dockerfile,只需要简单的配置修改,即可替代以往大量的更新工作。
Docker与其他技术比较
特性 | 容器 | 虚拟机 |
---|---|---|
启动速度 | 秒级 | 分钟级 |
性能 | 接近原生 | 较弱 |
内存代价 | 很小 | 较多 |
硬盘使用 | 一般为MB | 一般为GB |
运行密度 | 单机上千个容器 | 一般几十个 |
隔离性 | 安全隔离 | 完全隔离 |
迁移性 | 优秀 | 一般 |
Docker 与虚拟化
虚拟化virtualization
(技术是一个通用的概念,在不同领域有不同的理解。在计算领域,一般指的是计算虚拟化(computing virtualization)
,或通常说的服务器虚拟化。
总结
简述Docker
javascript基础知识总结