一个 IT 系统大致可以分为:

  1. 应用程序
  2. 运行时平台(bin/framework/lib)
  3. 操作系统
  4. 硬件(基础设施)

开发人员的主要工作是应用程序的编码、构建、测试和发布,涉及应用程序和运行时平台这两层。而运维人员的工作则涉及从硬件、操作系统到运行时平台的安装、配置、运行监控、升级和优化等工作。

云计算最主要的价值体现在实现了自动化运维。提高资源的利用效率,是较为次要的价值。

要实现自动化运维,需要解除 IT 系统各层之间的耦合,使各层变成可编程控制,即「software defined」的。只有我们可以编程创建和控制各层对象,才能达到最大程度的运维自动化。

硬件虚拟化技术解除了硬件和操作系统的耦合,用户可以编程创建和控制虚拟机(包括虚拟硬件,运行自定义的操作系统镜像)、虚拟存储设备和虚拟网络。

操作系统虚拟化技术解除了操作系统和运行时平台的耦合,用户可以编程定义适合应用运行的平台,包括需要的二进制程序、框架和库等。操作虚拟化技术既可以用来创建和管理系统容器,也可以用来创建和管理应用容器。如果是用作系统容器,这相当于一个轻量级虚拟机,目的是解除操作系统与底层的耦合。例如, LXC/LXD 和 OpenVZ 属于这个路线的。而 Docker 容器主要是用作应用容器,包括两方面的功能:

静态打包:把应用程序及其运行时打包为一个镜像;
动态运行:以一个应用容器的形式运行这个应用。

Docker 提供的这些功能是任何一家公司开发 IT 应用时都需要用到,它的使用是轻量级的,只需安装一个 Docker 软件包,就可以用起来,例如,用作开发和测试环境的构建。单机也能用,集群也能用,既可以简单,也可以复杂,非常灵活。想想看,如果你要安装和使用 OpenStack,有没有这么轻松便捷?

Docker 本身只提供最基本的功能,如果用户需要构建一个复杂的 IT 系统,单靠 Docker 本身是不够的。幸运的是,Docker 不仅提供了 API,还形成了一个庞大的社区和生态系统,包括知名的那些 IT 巨头。因此,基于 Docker 的解决方案具有非常大的灵活性,从原理上讲,不会对你的操作系统、运行时平台有特殊的限制。我个人觉得 Docker 是符合 Unix/Linux 哲学的:只做一件事,做到最好。还能与其它程序复合(compose),完成更复杂的功能。

对最终用户而言,Docker提供的是一个标准化的交付方式。

把应用跑起来只需要两样事情:

  1. 一个64位的linux内核
  2. 一个打包正确的docker镜像地址,或者Dockerfile

这样,用户,不管是大企业还是普通想在服务端跑程序的人,只需要这2者就完了。不用去操心一堆的数据库、消息队列、中间件、jvm参数、等等等的所有麻烦的事情。

这种交付方式能给用户带来什么体验呢?
一个形象的比喻就是目前iphone手机上的APP,在用户看来,只要点击“安装”,然后在桌面上就会出现一个图标,从灰色到下载完毕。其他任何事情都不需要操心。(我已经觉得该开发一个iphone版的docker容器的形象化管理程序了)想想我们当年多么痛苦的在PC机上安装游戏或者各种软件,现在在手机和平板上已经过了这个阶段,服务端也该过这个阶段了。

在这个前提之下,这样的应用场景就会出现:
任何一个人或者组织都能从docker市场上买到服务端应用,然后一键部署在自己使用的云上面。

最新文章

  1. CSS3 @font-face的使用
  2. 【第一篇献给markdown】markdown入门
  3. Windows Azure Cloud Service (1) 用户手册
  4. 基于ZigBee的家居控制系统的设计与应用
  5. BZOJ3322 : [Scoi2013]摩托车交易
  6. UVA 10892 - LCM Cardinality
  7. 转载:Hadoop权威指南学习笔记
  8. STL删除vector或list的方法及注意的问题
  9. JSch - Java实现的SFTP
  10. iOS 错误 之 http请求
  11. JavaWeb一小时急速入门总结反思
  12. nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address 
  13. The method queryForMap(String, Object...) from the type JdbcTemplate refers to the missing type DataAccessException
  14. Beta 第七天
  15. 从拥抱开源到回馈开源,灵雀云助力CNCF中国区培训业务
  16. Java中不定项参数(可变参数)的作用和使用方式
  17. HDU5950 Recursive sequence (矩阵快速幂)
  18. fgrep: ifcfg-ifcfg-eth0: No such file or directory
  19. 转 消息中间件:RocketMQ 介绍(特性、术语、原理、优缺点、消息顺序、消息重复)
  20. 24.form表单提交的六种方式

热门文章

  1. [转载]iOS Provisioning Profile(Certificate)与Code Signing详解
  2. HttpURLConnection使用getInputStream无法执行
  3. JS实现雪花效果
  4. JavaScript调试工具
  5. 解决PHP move_uploaded_file函数移动图片失败
  6. Yii2 使用Composer
  7. Jexus 5.8.2 Beta1发布:为Asp.Net Core进入生产环境提供平台支持
  8. 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.2,增加离线消息、离线文件功能(源码)
  9. C#中的线程一(委托中的异步)
  10. 人人都是 DBA(XI)I/O 信息收集脚本汇编