什么是 Docker?翻译一下意思是:码头工人,搬东西的。那计算机世界里 Docker 又代表什么意思呢?看下官方说法:
Docker is the world's leading software containerization platform.
翻译:Docker 是世界领先的集装箱化(容器)平台软件
貌似只知道是个平台软件,那它主要用来干嘛呢?看下官方说明:
将你的应用打包成标准化单元供软件开发用。
Docker 容器包含一套完整的文件系统,包含运行所需的所有东西:代码、运行时、系统工具、系统库,任何能安装在服务器上的软件。这保证了软件总是同样运行,而忽略了软件所在的环境因素。
不难理解,Docker 就是个容器,可以包含你所需要的所有软件,并可打包成独立的单元,以便快速复制,部署。容器之间相互隔离,且不受系统环境的影响。
如图:
说到容器,那你肯定会联想到虚拟机,Docker 和虚拟机有什么区别,又有什么优劣呢?让我们来做个比喻,假设我们有个仓库(服务器)可以存储东西,仓库中装有制冷设备(系统资源)对仓库进行温度控制。随着仓库的利用,储藏的东西越来越多,有水果,蔬菜,肉等。每样东西储藏的温度要求不同,不能放在一块。于是有人就对仓库进行了改造,把仓库改造成一个个带独立制冷设备的储藏间(虚拟机),这样就解决了不同物品的保存问题了。本来这样事情就解决了,可是有些人觉得每个储藏间都带个制冷设备太贵了不划算,能不能用共用一个制冷设备。经过一番周折他们给仓库装上了中央空调,通过制冷管连接每个储藏间,储藏间的制冷设备换成了制冷开关。这时候的储藏间(容器)同样能满足不同物品的存放要求。这种方式是不是更经济呢?说了这么多不如一张图:
可以看出,容器比虚拟机更轻便,占用的系统资源更少,这也意味着容器的效率更高,性能相对更好。架构图对比:
Docker 是直接跟系统主机打交道,而虚拟机是先创建虚拟机环境再通过虚拟机管理程序和主机通信。Docker 是基于 libcontainer 包对容器进行管理。