1. Docker出现的原因
- 一款产品从开发到上线,一般至少有开发 /线上 两套环境!每套环境的配置都不同。
- 开发与运维之间的难题:我在自己电脑上可以运行,版本更新导致服务不可用……
- 分布式系统的环境配置十分麻烦,每一台机器都要部署环境(集群Redis、ES、Hadoop……)
- 发布一个项目(jar包 + Redis\Mysql\jdk\ES…),项目带上环境安装打包
- 之前在服务器上配置一个应用环境 Redis、jdk、ES、Hadoop,配置十分麻烦,且不能够跨平台
Docker给以上问题提出了解决方案!!
流程:java项目 → jar包+环境 → 打包项目带上环境(镜像) → 发布到Docker仓库(商店) → 下载发布的镜像 → 直接运行即可
Docker的思想来源于集装箱,通过隔离机制,可以将服务器利用到极致。
(Docker是基于Go语言开发的)
文档:https://docs.docker.com/get-started/overview/
DockerHub:https://hub.docker.com/
2.Docker 能做什么?
虚拟机技术
虚拟机技术存在的缺点:1.资源占用非常多;2.冗余步骤多;3.启动很慢
容器化技术
容器化技术不是模拟一个完整的操作系统!!
比较Docker和虚拟机技术的不同:
- 传统虚拟机,虚拟出一套硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
- 容器内的应用是直接运行在宿主机的内核,容器是没有自己的内核,也没有虚拟硬件,所以轻便
- 每个容器间是相互隔离的,每个容器内都有一个属于自己的文件系统,互不影响