背景
对接Jenkins进行编译打包和版本标记
把指定版本的jar包,配置文件,启动脚本一起发布到指定的机器上裸机运行
通过对Java进程的管理来完成重启,关闭应用等运维操作
但是随着开发人员,项目数量,请求量的增加,旧的运维平台逐渐暴露出以下一些问题:
Java实例部署所需资源没有清晰的统计和系统层面的隔离,仅仅依赖于启动脚本中的JVM参数来进行内存的约束,新增实例或新上项目时往往需要运维人员靠“感觉”指定部署的机器,没有有效地分配机器资源,项目之间资源争用会导致性能问题。
虽然大多数应用依赖的环境只有JDK 7和JDK 8,但一些JDK的小版本差异,以及一些自研发Java agent的使用,使得简单地指定JAVA_HOME目录的方式很难有效地管理运行环境。
开发人员的服务器权限需要回收。一个服务器上可能运行多个不同部门的项目,相关开发人员误操作可能会导致其他项目被影响。
上述问题虽然也可以通过一些技术和规范约束来解决,但天生就是为了解决环境依赖和资源管理的容器技术是当下最合适的方案。