一、Docker的概述
一、Docker为什么出现?
- jar在开发环境到生产环境的过程中,会遇到一系列环境的问题–>(redis、ES、mysql、Jdk、…)docker在这个问题上能解决的问题是 在打包jar的时候可以直接将环境打包 省去了每次都要配置环境的时间,既省时又省力。
- 传统的开发模式:开发人员将打好的jar包直接扔给运维人员 剩余的都不关了 需要两个人来完成这个事情
- 现在使用docker: 开发打包部署上线 一步完成
开发安卓项目 java – apk – 发布(应用商店) — 用户下载使用apk–安装即可用
开发java项目 java – jar(带上环境) — 打包项目带上环境(镜像) — (Docker 仓库:应用商店) – 下载发布运行
Docker给以上的问题,提出了解决方案!
Docker的思想来自于集装箱!
一台服务器上部署多个项目时 会遇到端口冲突的问题 ---- 在没有Docker之前都是交叉的
隔离: Docker 的核心思想! 把每一个应用都打包装箱! 每个箱子是互相隔离的。
Docker 可以将Linux的性能压榨到极致
二、Docker简介
聊聊Docker
Docker是基于GO语言开发的
官网: https://www.docker.com/
文档:https://docs.docker.com/ Docker的文档是非常详细的
扫描二维码关注公众号,回复:
12501868 查看本文章
仓库命令:https://hub.docker.com/ Docker的镜像仓库地址
三、Docker的作用
之前的虚拟机技术
虚拟机技术:
- 占用的资源十分多
- 冗余的步骤很多
- 启动很慢
容器化技术
容器化技术不是模拟的一个完整的操作系统
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aBkzVkqn-1592906440928)(/Users/wangxuehui/Library/Application Support/typora-user-images/image-20200619212926861.png)]
比较Docker和虚拟技术的不同:
- 传统的虚拟机技术是模拟出一套硬件,运行一个完整的操作系统,然后再这个系统上安装和运行环境
- 容器内的应用是直接运行在宿主机上的,容器时没有自己的内核的,也没有虚拟的硬件,所以轻便
- 每个容器键是互相隔离的,每个容器内部都是有一个属于自己的文件系统,互不影响的
DevOps(开发运维)
更快速的交付和部署
- 传统:一堆帮助文档,安装程序
- Docker: 一建运行打包镜像发布测试
更便捷的升级和扩缩容
- 使用了Docker之后骂我们部署的应用就像小孩子搭积木!
- 项目打包为一个镜像,水平扩展 从服务器A—服务器B 一建运行
更简单的系统运维
- 在容器化之后,dev、test、pord 的环境都是高度一致的
更高效的计算资源利用
- 1核2G的服务器!可以创建几十个tomcat
- Docker是内核级别的虚拟化技术,可以在一个物理机上面运行非常多的容器实例