一. 为什么会出现docker?
不用说, 肯定是时代进步的产物. 那么, 他为什么能火????? 一定是解决了刚需的问题.
在开发环境运行的好好的, 怎么以部署到测试环境就有问题了呢? 开始各种排查, 最后发现, 可能是机器配置不一样, 导致tomcat启动超时等等等. 这种问题必须排查, 但是特别耗时, 仔细想想, 并不是特别需要. 如果能避免, 也给开发和运维节省了不少时间
通常我们会有三套环境, 开发环境, 测试环境,线上环境. 每一套环境都是一个集群.
一个集群里, 各种各样的软件, jdk, nginx, mysql, mongodb, redis......有很多. 以前运维老师是怎么干的? 搭建一个新的环境, 一台服务器一台服务器的安装. 累的半死.
这种重复造轮子的工作, 在java代码中是尽量避免的. 那么在运维环境是否也可以避免呢? 有想法,那么就会有实践. docker的实用场景之一就是一次部署, 到处使用
怎么个到处实用法呢? 举个例子
搬家, 我们以前搬家都是怎么搬的? 我要从A地搬到B地了. 雇一个把家公司, 把家里的家具全部都搬走, 搬到另一个地方, 一团乱, 然后慢慢收拾
如果很牛逼的话, 找一个省事的办法. 我直接吧A地的房子咔嚓, 直接把房子搬到B地. 房子里的东西原来放哪里,现在还放哪里. 这是不是就省了不少的事.
从搬家--->搬房子, 不得不说是一个思想的进步.
对运维来说,也是如此, 如果能够将环境一起打包, 然后在各个机器上一件安装, 的确可以节省不少时间.
二. docker的理念
docker是基于go语言实现的云开源项目
docker的主要目标是: "Build, ship and Run Any App, Anywhere", 即: 构建,分发,部署,运行等, 一次操作, 在各个app,各个地方都可以运行. 做到:"一次封装, 到处运行"
汇总一句话: 解决了运行环境和配置问题软件容器, 方便做持续集成并有助于整体发布的容器虚拟化技术.
这里注意一个重点你:docker使大规模动态调度成为可能, 因为他可以弹性的扩缩容
as