一、docker是什么?
docker是一项容器技术;何为容器:容器嘛,就是一个可以装东西的器皿,docker就是一个可以将程序及其程序运行所依赖的环境给打包到一起的软件。
二、docker历史
大概在2010年左右的样子,几个有梦想的IT男在美国成立了一家dotcloud的公司;主要从事一些与paas(平台即服务)和LXC有关的业务,它们的技术这几个给了个有趣的名字叫docker;没过多久,公司就活不下去了,他们选择了开源(开放源代码);过了不大久的时光,大家注意到了docker的优势;使用它的人越来越多。
LXC简介
LXC就是linux container 的缩写;Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源。(来源百度)
三、传统虚拟机与容器对比
虚拟机(左)
虚拟机的运行需要依赖一个 hypervisor 层,如果用过 VMware workstation这个软件的话,它会默认为我们提供这样的一个功能;我们需要再vmware这个软件里面创建虚拟机,不过每创建一个虚拟机,就会为这个虚拟机创建相应的硬件,然后再在这个虚拟的硬件系统里面安装操作系统,再在这个操作系统中运行程序。
容器(右)
容器可以直接运行在操作系统之上,而且每次创建容器都不需要虚拟出硬件,可以在容器中运行我们所需要运行的程序。
对比
总结来说,虚拟机整体的隔离性要比容器要好;应为每个虚拟机都会虚拟出自己的操作系统,互不影响,就算一个一个虚拟机坏掉,也不会影响另外一个虚拟机和宿主机;而容器因为没有虚拟操作系统,直接运行在主机操作系统之上,那么容器的隔离性也只体现在容器之间,因为使用的同一个主机的操作系统与内核及其硬件。
四、容器能解决什么问题?
1、速度更快,因为省去了安装操作系统,虚拟硬件等操作。
2、资源占用更少,因为没有安装操作系统,虚拟硬件等,以前可能12G的内存的机器只能运行几台虚拟机,那么你运行容器将是二十来台;资源利用率更高。
3、减小了运维与开发的壁垒,开发和和实际程序运行的环境有所不同,以前是将程序发布出去时,还需要重新在运行环境中安装程序运行所依赖的环境;如果我们使用容器,只需要将程序和程序的运行的环境打包在一起,那么直接发布这个容器即可,十分方便。