Docker概述
关于Docker:建议看文档
目录:
Docker为什么会出现?
传统运行项目:
由于开发人员和运维人员用的服务器用的环境可能不一致,导致有时项目运行不起来。
将Java项目生产jar包不附带环境,然后再服务器上再搭建环境,以此来运行项目。 比如需要配置jdk,mysql,redis
在服务器上为项目配置环境是一个很麻烦的事情,为了使得开发环境和运维环境不会冲突便出现了docker
现在运行项目:
开发人员不是只打包jar包了,而是将(jar包和环境一起打包),此种称为镜像方式,当运维需要运行该项目的时候直接下载镜像运行即可,而不需要再配置环境
举例:
Java ---jar(环境) ---打包项目带上环境(镜像)----(Docker仓库:商店) ---下载我们发布的镜像 ---直接运行即可
Java --- apk -- 发布(应用商店) --张三使用apk ---安装即可用
Docker给出以上问题的解决方案:
传统 运行多个项目可能会出现端口冲突----原来都是交叉的
隔离:docker的核心思想就像上图中集装箱互相不影响,打包装箱,每个箱子是互相隔离的
关于对docker运行多个项目端口冲突问题:带我实践后再来总结
Docker能干嘛?
传统虚拟机方式
缺点:
- 资源占用十分多
- 冗余步骤多
- 启动很慢
容器化技术
容器化技术不是模拟的一个完整的操作系统
比较Docker和虚拟机技术的不同
- 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
- 容器内的应用直接运行在宿主机的内容,容器内没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了
- 每个容器间时互相隔离,每个容器内都有一个属于自己的文件系统,互不影响
DevOps(开发,运维)
应用更快速的交付和部署
传统:一堆帮助文档,安装程序
Docker:打包镜像发布测试,一键运行
更便捷的升级和扩缩容
使用了Docker之后,我们部署应用就和搭积木一样
更简单的系统运维
在容器化之后,我们的开发,测试环境都是高度一致的
更高效的计算资源利用
Docker时内核级别的虚拟化,可以再一个物理机上可以运行很多的容器实例!服务器的性能可以压榨到极致