Docker 的应用场景

一段时间以来,Docker 是一项很热门的技术,受到了一些大公司的关注。不过热归热,Docker 对多数开发人员来说,并没有什么实际的作用。

Docker 是什么?Docker 是一个沙盒(Sandbox)机制。Docker 的术语中,一个 Sandbox 是一个 Docker 容器(container)。在一个 Docker 容器中,用户可以自由地安装各种软件,而不同的 Docker 容器互相之前不影响。

Docker 最直接的应用场景是取代虚拟机。比如一个博客运营商,它的物理主机配置肯定异常得好,比如 16 核 CPU、32G 内存、10T 硬盘等,但它卖给用户的时候,每个用户差不多单核 CPU、1G 内存、5G 硬盘就够用了。这个时候就需要用到虚拟机技术,把一台物理主机划分成若干个虚拟机,每个虚拟机之间互不影响,也就是用户 A 的博客,不会被同主机的用户 B 修改。这样用户可以按自己的需要来购买合适的虚拟机,而主机商把整台主机切开来卖出去,不会浪费,是一个双赢的局面。

但虚拟机技术有一个缺陷,就是它太庞大了。一台虚拟机就是一个完整的操作系统,包含了所有操作系统的必要功能,比如进程调度、通知、DNS 解析等应有尽有,而这些基本功能,不是每个用户都需要自己用自己的。大多数用户,只是在虚拟机上运行自己的博客程序,而其底层依赖的系统功能,大多是可以共享的。但在虚拟机的限制下,系统功能也被复制成很多份,不能共享,实际上造成了一些浪费。

这些浪费是主机商不想看到的,浪费系统资源就等于减少了收入。这也是为什么各种云计算厂商,在看到 Docker 技术的时候两眼放光的原因。Docker 的本质不是虚拟机,它只是一个轻量级的容器。在 Docker 环境是,系统功能可以共享,只有用户的应用程序被隔离开来,从而使得一台主机上可以卖给更多的用户,赚更多的钱。

“轻量”所带来的另一个好处是高效地部署,一台虚拟机从开始部署到可以使用,大概需要 10 分钟时间,而 Docker 可能不到一分钟就完成了。多数在线系统都有负载均衡机制,就是使用大量的后端服务器来响应用户请求,假设有 10 台服务器,每台服务器只需处理 1 / 10 的请求。在应对突发高访问量的时候,比如春节的微博红包和双十一的抢购潮,系统可以通过增加服务器数量的形式来减轻每台服务器的负载。在动态增加服务器时候,服务器的部署时间就成了瓶颈。这时候如果系统使用了 Docker,则能更流畅地增加吞吐量。

上述是 Docker 最主要的应用场景。如果你的应用没有上述需求,鲁莽地使用 Docker 只要造成不必要地浪费。


4 条评论 添加

  1. “轻量”所带来的另一个好处是高效地部署,一台虚拟机从开始部署到可以使用,大概需要 10 分钟时间,而 Docker 可能不到一分钟就完成了。多数在线系统都有负载均衡机制,就是使用大量的后端服务器来响应用户请求,假设有 10 台服务器,每台服务器只需处理 1 / 10 的请求。在应对突发高访问量的时候,比如春节的微博红包和双十一的抢购潮,系统可以通过增加服务器数量的形式来减轻每台服务器的负载。在动态增加服务器时候,服务器的部署时间就成了瓶颈。这时候如果系统使用了 Docker,则能更流畅地增加吞吐量
    -----------------
    这个根本没有道理,Docker是基于屋里机的,不增加物理机单纯增加Docker容器不会有效果,这是两个层面。

发表评论

电子邮件地址不会被公开。 必填项已用*标注