- Docker 是一个开源的应用容器引擎
- 诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc)
- Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上。
- 容器是完全使用沙箱机制,相互隔离
- 容器性能开销极低。
- Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)
我对Docker的理解
在宿主机(centos,windows或mac系统)上安装docker引擎(即docker环境),然后再docker引擎上运行docker容器(即一个一个的应用程序)。
我们可以把宿主机比作无边无际的汪洋大海,把docker环境理解为大海上的一艘大货轮,把docker容器理解为货轮上的一个集装箱,每个容器就相当于是一个正在运行的应用,比如说一个mysql应用,一个redis应用,一个tomcat应用或者是一个springboot应用,我们也可以把每一个容器看作是一个在docker引擎上跑着的一个小型的虚拟机。
Docker的应用使用 Docker 可以克服应用程序的复杂性
1.快速、一致地交付您的应用程序
使用docker,我们可以使用镜像来快速构建一套标准的开发环境。
传统方式部署示意图
容器化部署示意图
总结一句话:docker是一种容器技术,解决了软件环境迁移的问题。
比如说我们现在需要部署一套程序,按照传统的做法是先安装apache,mysql,jdk,以及他们各自运行所依赖的环境,之后分别对他们就行相关的配置,经过大量的操作后,还需要进行功能的测试,看是否正常,如果不正常那么得各种找原因,根据经验其实大多数的不正常不是因为我们的代码有问题而是软件的环境配置有问题,浪费大量时间。
用docker可以很好的解决这些问题,可以将每套程序(也就是每一个容器)都打成镜像,把镜像迁移到其他我们需要部署程序的服务器上,在把镜像再还原成容器,因为容器其实就是相当于一个小小的虚拟机,其实就是把环境打包了,无论迁移到哪个服务器上,都是这个环境。
2.响应式部署和扩展
Docker容器可以在开发人员的本地笔记本电脑上,数据中心内的物理或虚拟机上,云提供商上或混合环境中运行。
Docker的可移植性和轻量级的特性还使您可以轻松地动态管理工作负载,并根据业务需求指示实时扩展或关闭应用程序和服务。
3.在相同硬件上运行更多工作负载
Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现虚拟化。与传统的虚拟机相比,Docker优势体现为启动速度快、占用体积小。
传统的虚拟机是再硬件的层面上进行虚拟化的需要有额外的虚拟机管理系统(如:VirtualBox和VMWare等),创建虚拟机(虚拟出 各种硬件),在虚拟机上安装从操作系统,在从操作系统中安装部署各种应用。



