IT界中云计算革命正在如火如荼的进行着,docker 正在引领着这个潮流。 那么docker 是怎么引进来的呢? Docker的CTO在下面视频里如此清晰的回答docker 的想法和名字的来由。
Docker是用来解决软件软件的发布。思路至关的清晰,可让咱们更好的抓住docker 的自己。
Docker 尝试解决的问题:
如何使得软件的发布可靠而且迅速,也就是自动化起来? 简单的说就是在A机器运行的程序,如何让它也在B机器运行起来? 但这个不是一件容易的事情。
软件愈来愈强大,也愈来愈复杂。 其中模块愈来愈多,其之间的依赖也愈来愈复杂。此外不一样的技术栈,也须要不一样的运行环境。
此外运行环境基础设施也有多种,物理界,虚拟机,不一样配置环境的机器。以下图。
面对如此复杂的矩阵,如何解决在A机器能够运行在B机器运行不起来的故事呢?
debug,这是在生活中那是多么tough的一件事。
咱们呼唤标准环境,所谓的inforstracuture as a Code.可是须要多大的努力才能获得这样的环境。 开发环境统一,测试环境的统一,最终的部署环境统一。 若是部署的环境是客户机器,难道须要客户也作一个标准环境? 那是多么不容易的一件事呢?
做者看到问题本质,可是给出了更加优雅通用的方法。这个方法就是借鉴来自于运输业的集装箱。
运输行业也面对这样的问题,货物的种类和运输的基础设施多样性的复杂矩阵问题。
解决方案是:标准化。 集装箱! 而后基于集装箱,自动化。
软件发布也能够作到标准化,将软件放到一个盒子里面,而后将其标准化。这就软件里面的docker.
这就是Docker,将软件封装到容器,造成标准化与基础环境彻底隔离。
这样开发,复杂将软件打包。
云提供商,复杂运行docker的容器。好了到此为止,容器里面与外面运行环境完全解耦了。 软件开发与软件运维这个时候能够彻底不须要解耦了。
或许不久的将来,软件的发布方式就是docker,将软件自己和其依赖库打包到里面; 开箱就可用。
云时代到了,docker天然就去占领云运行环境。 云分三层( Infrastructure As a service, Platform as a Service, Software as a Service), docker天然而然的去替代中间那一层。 也就是 Container as a Service.
因此各大云服务提供商,好比 amazon, Microsoft, google,阿里云,都对于Docker 报有更大的兴趣。 很快各个提供商都提供容器服务。
另外软件自己的功能愈来愈强大,其模块数量增多; 为服务架构的普遍接受,对于各类技术栈的应用,使得部署过程复杂化; 同时持续发布,使得部署的频率更高; 这些带来的发布的复杂度, docker 自然能够用来减轻这些复杂度。
Docker 真是在正确的时间作了正确的事。