开宗明义,什么是docker?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
这是比较官方的定义,我们可以用一些简单通俗的话来揭示什么是docker,docker的宗旨理念能给我们很多解释: Build and Ship any Application Anywhere,这就是docker所做的,每个人都可以从镜像文件中,找到容器实例来运行,
这就是docker。
背景
在讨论什么是docker时,我们要了解docker为什么会出现,他解决了什么问题。一个应用程序的开发和运维是两个模块,开发要先把代码或war包做好,然后交给运维进行维护,但其中很容易出现问题,因为配饰环境,运行环境,操作系统不同,很容易出现在开发环境中可以运行,但在运维环境中无法运行的偏差。
这个时候就需要一个容器,不仅仅把代码运输过去,也要能把开发环境也搬运过去,这个大抵就是docker办的事情。一句话解释就是,docker是解决了运行环境和配置问题的软件容器,方便持续集成并有助于整体发布的容器虚拟化技术
价值
docker的价值主要就是有
- 解决了运行环境等不同导致的运营问题,实现了一次搭建,可以处处运行。
- 大大缩减了内存空间的占有。
- 加快了操作时间,缩减掉了不必要的过程,让整套流程轻简起来。
与虚拟机的不同
docker是容器虚拟化技术,看起来和虚拟机是非相似,事实上,我们可以理解docker是一个升级优化后的轻简版docker。
以往的docker主要有以下的几个问题,
- 启动时间长(分钟级别),而docker是秒级别的
- 资源占用多,以centOS为例,在虚拟机上安装大约有4G,而在Docker上只占有170M的内存。
- 冗余步骤多。
那么,为什么docker能够做到相对轻简,而虚拟机不行呢?
首先,虚拟机是通过软件模拟出完整硬件系统,运行在一个完全隔离环境中的完整计算机系统,你可以理解为这是一个装在计算机里面的计算机,所以他的内存占有量必然是极大地,就像是之前所有的算法一样,这个看起来相对粗暴一点,就必然有简化的可能,于是docker应运而生了。
Docker基本组成
Docker主要是有三个部分:镜像(image),容器 (container),仓库 (repository)
镜像是一个只读的模版,镜像可以用来创建docker容器
容器是镜像创建的容器实例,docker利用利用