![](https://cdn.zimug.com/wx-zimug.png)
[TOC]
**Docker**是一个开源的容器引擎,它轻巧,且易移植,“build once, configure once and run anywhere”。使用go语言开发,并遵从apache2.0协议。
## 一、 传统软件行业中存在的问题
* 开发、生产、测试环境不一致,开发环境下可用的服务挪到生产上不可用。
* 不同环境之间迁移成本太高,没有统一的软件部署封装标准及封装环境。
* 对于分布式软件持续集成(测试、打包、发布、部署、管理)周期很长,难以自动化、工程化。
* 面临瞬时用户流量增大的场景,很难实现分布式应用服务实例的快速部署。
![](http://cdn.zimug.com/95d5d891ed3a65511277abb4acc4a59b)
## 二、集装箱与docker之间的关系
通常称docker为软件行业的集装箱技术,那么docker和集装箱有什么相似之处呢?
| 传统行业集装箱 | 软件行业Docker |
| --- | --- |
| 装载实体货物 | 装载并运行应用服务 |
| 具有统一的规格,便于搬运 | 封装环境的统一性(JDK、环境变量都可以封装在一个docker镜像里面),可以遵从一定规则反复的、快速的自动化安装部署 |
| 环境隔离,每个公司的集装箱货物与其他的公司的货物不混在一起。 | 在linux中采用namespace技术进行资源隔离,cgroups技术进行资源限制。容器之间互不影响。 |
|资源共享,一个运送集装箱的船舶,搭载多个集装箱|一台服务器可以启动多个docker容器,达到共享服务器资源的目的|
| 具备完整的物流仓储系统 | docker镜像仓库中的镜像,可以导出导入,上传下载 |
可以参考我的另一篇文章[《【大话云原生】煮饺子与docker之间的关系》](https://zimug.blog.csdn.net/article/details/123321369),我觉得这篇文章对于您理解docker将有非常大的帮助。
## 三、docker与虚拟机的区别
docker和虚拟机在某些应用场景下比较像,但是docker不是虚拟机。
![](http://cdn.zimug.com/673b53d7736f90f49f40a24d25cec046)
docker是一种虚拟化容器技术,他和虚拟机最根本的区别是:**docker容器和宿主机共用linux操作系统内核,不会在宿主机上再次安装操作系统**。**docker容器运行状态下的本质是宿主机上的进程**,通过namespace资源隔离,cgroups资源限制,使它看上去像是一个独立的虚拟机.
|对比项|虚拟机|docker容器|
|----|----|----|
|启动速度|龟速(本质是启动操作系统)|秒速(本质是启动一个进程)|
|镜像大小|以Ubuntu为例,1G以上|Ubuntu:195M|
|应用部署集成|通常是手动安装|下载镜像+启动镜像(自动)|
|内存访问效率|慢,先访问虚拟地址|基本等同于宿主机|
|CPU损耗|虚拟操作系统造成的损耗较大|接近于0|
## 四、docker的应用场景
* docker镜像一旦构建,就已经一次性完成了应用自动打包、集成。docker镜像可以进行版本管理、复制、分享、修改,就像管理代码一样。
* 通过统一的docker环境封装(比如镜像中封装了同一版本的JDK、同样的环境变量等等),保证应用服务运行环境的一致性。避免出现在测试环境上好用,挪到生产环境下运行失败的问题。
* docker可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。
* 因为镜像可下载、可复用,docker容器可快速启动等特性,结合容器编排服务(k8s)可以实现大型分布式部署的弹性伸缩,快速扩展。
## 五、总结
如果初学者对于本节内容理解起来有困难,也不要气馁。其实docker的学习难度很低,随着学习的深入,上面的这些概念很容易理解的。
- 文档概要
- 第一章 docker基础
- docker介绍
- CentOS7安装docker
- 基础概念介绍
- 示例-docker安装nginx
- 镜像管理详解
- 容器管理详解
- 容器自启动与保活
- 使用IDEA工具远程管理
- 第二章 制作与管理镜像
- 镜像分层原理
- Dockerfile语法解析
- 使用Dockerfile构建镜像
- 制作Springboot镜像
- registry v2镜像仓库搭建
- 第三章 docker数据管理
- docker存储驱动
- 数据管理-Bind mounts
- 数据管理-Volumes
- 容器间数据共享
- 第四章 Docker容器安全
- 用户提权问题实验
- 非root用户安装使用Docker
- API认证接口使用HTTPS
- 资源配额限制
- 第五章 Docker网络基础
- docker网络基础概念
- docker基础网络模式
- overlay跨宿主机通信
- 配置DNS服务
- 第六章 DockerCompose
- 安装与入门
- 一键部署wordpress
- Harbor的搭建与使用
- YAML配置文件详解
- 第七章 Docker Swarm
- 几乎没人用就不写了
- 附录
- CentOS7内核升级
- docker引擎及容器日志
- 离线挂载yum源
- 笔者其他作品推荐
- vue深入浅出系列
- 手摸手教你Spring Boot2.0
- Spring Security-JWT-OAuth2一本通
- 实战前后端分离RBAC权限管理系统
- 实战SpringCloud微服务从青铜到王者