Docker 的前世今生( 二 )

  • 启动迅速:没有虚拟机硬件的初始化 , 没有 Guest OS 的启动过程 , 可以节约很多启动时间 , 这就是容器的“开箱即用”;
  • 占用资源少:没有运行 Guest OS 所需的内存开销 , 无需为虚拟机预留运行内存 , 无需安装、运行 App 不需要的运行库/操作系统服务 , 内存占用、存储空间占用都小的多 。相同配置的服务器 , 如果运行虚拟机能运行十多台的 , 通常可以运行上百个容器毫无压力——当然前提是单个容器应用本身不会消耗太多资源 。

  • Docker 历史
    2010 年 , 几个搞 IT 的年轻人 , 在美国旧金山成立了一家名叫 dotCloud 的公司 。dotCloud 的平台即服务(Platform-as-a-Service, PaaS)提供商 。底层技术上 , dotCloud 平台利用了 linux 的 LXC 容器技术 。

    Docker 的前世今生

    文章插图
     
    为了方便创建和管理这些容器 , dotCloud 基于 google 公司推出的 Go 语言开发了一套内部工具 , 之后被命名为 Docker 。Docker 就是这样诞生的 。
    LXC 是 Docker 的底层基石 , 但是在 Docker 0.9 版本的时候 , Docker 见异思迁了 , 引入了基于 Go 语言构建的 Libcontainer 的 execution driver 。有了 Libcontainer 这个项目 , Docker 不再需要依赖于 Linux 部件(LXC , libvirt , systemd-nspawn...)就可以处理 namespaces、control groups、capabilities、apparmor profiles、network interfaces 。这下 , LXC 沦为可选项 。
    在 Docker 1.8 中 LXC 被 deprecated , 在 Docker 1.10 , LXC 彻底出局 。Docker 推出 Libcontainer 自己集成了 Linux 内核中的很多特性 , 作为一个独特、稳定且不受制于 Linux 的 Library , 独立的时代终于到来了 。

    Docker 的前世今生

    文章插图
     
    如同 Docker 的 Logo 一样 , Docker 的思想来源于集装箱 。集装箱解决了什么问题?在一艘大船上 , 可以把货物规整的摆放起来 , 并且各种各样的货物被集装箱标准化 , 集装箱与集装箱之间互不影响 。那么就不需要专门运送水果的船和专门运送化学用品的船了 。只要这些货物封装在不同的集装箱里 , 就可以用一艘大船把它们都运走 。
    Docker 技术诞生之后 , 并没有引起行业的关注 。而 dotCloud 公司 , 作为一家小型创业企业 , 在激烈的竞争之下 , 也步履维艰 。
    正当他们快要坚持不下去的时候 , 脑子里蹦出了“开源”的想法 。什么是“开源”?开源 , 就是开放源代码 。也就是将原来内部保密的程序源代码开放给所有人 , 然后让大家一起参与进来 , 贡献代码和意见 。
    有的软件一开始就是开源的 。也有的软件 , 是混不下去 , 创造者又不想放弃 , 所以选择开源 。自己养不活 , 就吃“百家饭”嘛 。2013 年 3 月 , dotCloud 公司的创始人之一 , Docker 之父 , 28 岁的 Solomon Hykes 正式决定 , 将 Docker 项目开源 。

    Docker 的前世今生

    文章插图
     
    不开则已 , 一开惊人 。越来越多的 IT 工程师发现了 Docker 的优点 , 然后蜂拥而至 , 加入 Docker 开源社区 。Docker 的人气迅速攀升 , 速度之快 , 令人瞠目结舌 。
    开源当月 ,  Docker 0.1 版本发布 。此后的每一个月 ,  Docker 都会发布一个版本 。到 2014 年 6 月 9 日 ,  Docker 1.0 版本正式发布 。
    此时的 Docker , 已经成为行业里人气最火爆的开源技术 , 没有之一 。甚至像 Google、微软、Amazon、 VMware 这样的巨头们都对它青睐有加 , 表示将全力支持 。
    Docker 火了之后 ,  dotCloud 公司干脆把公司名字也改成了 Docker Inc.。
    为什么选择 Docker
    更高效的利用系统资源
    由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销 , Docker 对系统资源的利用率更高 。无论是应用执行速度、内存损耗或者文件存储速度 , 都要比传统虚拟机技术更高效 。因此 , 相比虚拟机技术 , 一个相同配置的主机 , 往往可以运行更多数量的应用 。


    推荐阅读