一、Docker 概述
1.1 为什么要使用 Docker
1、环境配置:
以前不用 Docker,如果你在 Windows 上开发好的项目打成 jar 包要发布到 Linux上,你需要在 Linux 又要安装 jdk,maven 等环境,非常繁杂。
而 Docker 可以把环境配置携带到 jar 中,不再需要再配置这些,可以解决跨平台的问题。
再以安卓发布 app 的流程为例:
-
项目打包成 apk 发布到应用商店,用户点击安装即可使用。
-
对应 Docker ,项目打成 jar 包,打包项目帯上环境(镜像),运行即可。Docker 仓库相当于上面的应用商店,就一切都给你备好了。
2、可以解决多个应用启动端口冲突问题:
Docker 的核心思想是他的隔离机制,所以不会有说端口会冲突,并且这样的机制使他极致的利用了服务器。
1.2 什么是 Docker
在容器技术出来之前,我们都是使用虚拟机技术!
虚拟机:在 Windows 中装一个 VMware,通过这个软件我们可以虚拟出来一台或者多台电脑!笨重!
虚拟机也属于虚拟化技术,Docker 容器技术,也是一种虚拟化技术!
-
vm : linux centos 原生镜像(一个电脑!) 隔离、需要开启多个虚拟机! 几个G 几分钟
-
docker: 隔离,镜像(最核心的环境 4m + jdk + mysql)十分的小巧,运行镜像就可以了!小巧!秒级启动!
比较Docker和虚拟机技术的不同:
-
传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
-
容器内的应用直接运行在宿主机的内核,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了
-
每个容器间是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响
DevOps(开发、运维)
1、应用更快速的交付和部署
- 传统:一堆帮助文档,安装程序。
- Docker:打包镜像发布测试一键运行。
2、更便捷的升级和扩缩容
- 使用了 Docker 之后,我们部署应用就和搭积木一样
- 项目打包为一个镜像,扩展服务器 A!服务器 B
3、更简单的系统运维
- 在容器化之后,我们的开发,测试环境都是高度一致的
4、更高效的计算资源利用
- Docker是内核级别的虚拟化,可以在一个物理机上可以运行很多的容器实例!服务器的性能可以被压榨到极致。
Docker 的基本组成:
镜像(image):
- docker 镜像就好比是一个目标,可以通过这个目标来创建容器服务,tomcat 镜像==> run ==>容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。
容器 (container):
- Docker 利用容器技术,独立运行一个或者一组应用,通过镜像来创