Docker最初是dotCloud公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,他是基于dotCloud公司多年云服务技术的一次革新,并于2013年3月以Apache 2.0授权协议开源,主要项目代码在GitHub上进行维护。
Docker使用Google公司退出的Go语言进行开发实现,基于Linux内核cgroup,namespace,以及AUFS类的Union FS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。
由于隔离的进程独立于宿主和其他的隔离的进程,因此也称其为容器。
docker是一个开源的容器框架,基于Go语言实现,基于操作系统的虚拟化技术(有点类似于虚拟机)
docker的logo
鲸鱼看做是货轮,上面放的集装箱,看成是一个平台
集装箱看成容器
集装箱容器中装的是java项目,PHP项目
集装箱于集装箱之间没有任何联系
Docker可以打包应用程序和开发环境放在容器里面,这个容器可以放在任何Docker环境里面。
在鲸鱼上面的集装箱是沙盒机制,每个集装箱容器,不存在任何关联
Docker是一个平台,平台上有很多容器,容器里有很多项目(应用程序和他所需要的环境)
Docker能够做什么?
能够解决虚拟机能够解决的所有问题,而且可能因为你硬件设备环境导致虚拟机没有办法解决的事情
Docker与虚拟机的异同点
相同之处:都是基于硬件平台,放在自己的操作系统中
不同之处:虚拟机需要借助第三方软件,比如说VM,在VM里面再装各种需要的操作系统,这时候需要的硬件资源会更多一点比如说一个win系统,需要40G的内存,centos需要20G内存,然后再系统中再来进行环境搭建,比如说java环境,PHP运行的环境,.net运行环境等,需要消耗资源过大,太笨重。
Docker的话,他作为一个游轮(平台),上面有不同的集装箱,就可以把各自的项目环境和程序都放在集装箱中,各自封装。
为什么要使用Docker?
节约安装各种开发环境的软件时间,部署一次,可以在任意平台上运行;
更轻松的迁移和拓展(可以在任意平台运行,可以包含自己的工作环境,个人物品等)
更高的资源利用率(一台电脑可以安装上千台Docker容器,虚拟机如果果想运行10个不同的应用程序,可能需要启动10个虚拟机,而docker只需要启动10个容器就可以)
Docker的想法
Docker的想法是创建软件程序可移植的轻量级容器,让其可以安装在Docker任何机器上能够运行,并不关系底层的操作系统(只要你操作系统中安装了docker,都可以把这个集装箱安装上去),就像野心勃勃的造船者们创造了集装箱,而不需要考虑放在那种船只上一样。
目标:简化部署流程,提供生产效率,使工作变得更简单。
Docker作为一种新兴的虚拟化方式,Docker跟传统的虚拟化方式相比具有众多的优势。
Docker分为CE和EE两大版本:
CE即社区版,免费,支付周期7个月。
EE即企业版,强调安全,付费使用,支持周期24个月