「码呗学院」聊一聊互联网公司Docker容器化是如何实践的?( 四 )

mesos-slave 部署在每个node(主机)节点的服务,用来采集服务器数据信息,执行指令。

mesos-master 管理服务器资源信息,分派mesos-slave资源调度指令。

marathon 资源计算服务,根据应用部署需要的资源信息,提供资源分配,并且提供了一套UI,通过UI可方便的进行管理操作。

各个组件服务结构如下图:

镜像

我们的服务,主要的包括Java和node两种类型的服务,所以基础镜像也根据不同的版本号,提供了多种类型。镜像基础使用的是alpine的版本,镜像文件非常小,jdk使用的openjdk,加上启动服务的脚本以及其他配置,配置内容,镜像最终大小100M左右,加上项目打包好以后的镜像,在150M上下,当然为了一些项目的特殊需求,也提供了oracle jdk的镜像版本,但是至今未使用过。

构建

我们的技术框架最初是基于Spring Boot,通过Spring Boot提供的打包插件,可以方便的把项目构建成一个运行时需要的jar包,启动jar包和指定的运行时的一些参数信息,是通过gitlab统一管理的一些shell文件,通过jenkins构建过程,动态的把项目的jar包和启动脚本,封装在一起,然后发布到应用服务器,解压启动。但是如果采用docker部署,这种方式就不可行了,因为docker部署面向的是镜像。

推荐阅读