1、Docker为什么会出现?
(1)开发和上线是两个不同的环境,以及在开发过程中出现不同的测试环境,导致应用环境配置是一个非常耗时且麻烦的工作。而且会存在依赖文件版本升级的问题,从而导致服务不可用。
(2)传统的流程:开发将服务封装成jar文件,由运维人员去发布上线。但是假如这个jar文件依赖MySQL、Redis、ES等数据库,运维人员则需要自行安装;Docker可以将应用文件、环境信息统一放在Docker仓库中,运维人员只需要下载发布在仓库中文件,执行运行即可。Docker简单说来就是一个词“打包”!Docker将不同的应用的环境信息进行打包隔离,解决了环境信息不一致的问题,也解决了冲突的问题。
2、Docker的隔离机制可以将服务器利用到极致。
3、Docker的发展历史
(1)2013年Docker开源,2014年,Docker1.0发布。
(2)在容器技术出现之前,都是通过虚拟机技术来解决问题。但是很笨重,因为虚拟机需要去模拟一些硬件操作,因为虚拟机虚拟的是一台电脑。
(3)Docker也是属于虚拟化技术的一种,但是Docker十分轻巧。
(4)VM和docker对比
- VM的隔离需要开启多个虚拟机,每个虚拟机都相当于独立模拟一台电脑。需要几G,甚至十几G。启动慢。
- docker的隔离是只生成一个最核心的镜像(Linux系统最小只需要4M就可以运行),十分小巧。docker只需要几M就可以了,启动快。
4、docker是基于go语言开发的。
5、虚拟机和docker对比
(1)虚拟机的缺点:资源占用多、冗余步骤多、启动速度慢
(2)容器化技术不是模拟一个完整的操作的系统。
(3)结构图对比
虚拟机的结构 | 容器技术的结构 |
所有的应用共享一个环境、依赖包。 |
各自的依赖包互相隔离,运行在同一个内核之上。 |
(4)对比总结:
- 传统的虚拟机会虚拟出一整套硬件,运行一个完整的操作系统,然后再这个系统上运行应用。
- 容器直接运行在宿主机 的内核上,容器本身并没有内核,也不会去虚拟硬件。
- 每个容器之间互相隔离,独立拥有各自的文件系统,互不影响。
6、docker的优点
(1)应用更快速的交付和部署。打包镜像发布测试,一键运行。
(2)更便捷的升级和扩缩容。项目打包为一个镜像,扩展及其方便。
(3)更简单的系统运维。开发、测试、运维环境高度一致。
(4)更高效的计算资源利用。Docker是内核级别的虚拟化,可以在一个物理机上运行很多容器实例,服务器的性能可以被压榨到极致。
7、Docker的基本结构
镜像(image):docker镜像相当于一个模板,可以通过这个模板来创建容器服务。通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)
容器(container):docker利用容器技术,独立运行一个或者一个应用组,通过镜像来创建。包括启动、停止、删除等基本命令。
仓库(repository):仓库是存放镜像的地方,分为公有仓库和私有仓库。一般默认为Docker Hub,国内也有容器服务仓库,例如阿里云等。