Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,能够把货物规整的摆放起来。而且各类各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不须要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就能够用一艘大船把他们都运走。php
docker就是相似的理念。如今都流行云计算了,云计算就比如大货轮。docker就是集装箱。java
1.不一样的应用程序可能会有不一样的应用环境,好比.net开发的网站和php开发的网站依赖的软件就不同,若是把他们依赖的软件都安装在一个服务器上就要调试好久,并且很麻烦,还会形成一些冲突。好比IIS和Apache访问端口冲突。这个时候你就要隔离.net开发的网站和php开发的网站。常规来说,咱们能够在服务器上建立不一样的虚拟机在不一样的虚拟机上放置不一样的应用,可是虚拟机开销比较高。docker能够实现虚拟机隔离应用环境的功能,而且开销比虚拟机小,小就意味着省钱了。docker
2.你开发软件的时候用的是Ubuntu,可是运维管理的都是centos,运维在把你的软件从开发环境转移到生产环境的时候就会遇到一些Ubuntu转centos的问题,好比:有个特殊版本的数据库,只有Ubuntu支持,centos不支持,在转移的过程中运维就得想办法解决这样的问题。这时候要是有docker你就能够把开发环境直接封装转移给运维,运维直接部署你给他的docker就能够了。并且部署速度快。数据库
3.在服务器负载方面,若是你单独开一个虚拟机,那么虚拟机会占用空闲内存的,docker部署的话,这些内存就会利用起来。centos
总之docker就是集装箱原理。服务器
你们应该基本都理解集装箱是怎么改变世界的吧? 在集装箱以前,货物运输没有统一的标准方式进行搬运,因而铁路、公路、海洋等各类运输之间,须要大量的人力做为货物中转,效率极低,并且成本很高。集装箱出现以后,世界上绝大多数的货物运输均可以放到这个神奇的箱子里,而后在公路、铁路、海洋等全部运输场景下,这个箱子均可以不用变化形态直接能够承运,并且中间的中转工做,均可以经过大型机械搞定,效率大大提高。今后全球化开始,商业的潜力被进一步挖掘......
Java号称“一次编译,处处运行”,由于java虚拟机解决平台的兼容性问题,因此有java虚拟机的地方就能跑java代码;运维
Docker是:“一次封装,处处运行”,由于docker决绝了应用环境的问题,安装了docker的平台就能跑“docker包”,这样就决绝了“开发环境能跑,一上线就崩”的尴尬。网站
4. 云计算