对基于Docker的FineOps运维平台的理解与心得
【Docker】
英文原意:n.码头工人
定义:一组平台即服务的产品,一个开源的应用容器引擎。
编码:主体采用Go语言开发,极小部分C语言。
初创:dotcould公司 (法国)
架构:客户端(Client) + 服务端(Server)
————————————————————————————————————————
原理:(个人理解)
Docker的图标是一只驮着集装箱的鲸鱼,背上的集装箱就是封装好的镜像……
但我有个更佳的类比例子,那就是把使用Docker比作烹饪!真的非常有助于理解Docker的工作原理!
------------------------------------------------------------------------------------------
Linux服务器(宿主机) ▶ 厨房
宿主机内核 ▶ 厨具设施
Docker引擎 ▶ 厨师
厨师到厨房准备做饭,便是Docker的部署过程。
------------------------------------------------------------------------------------------
远程镜像仓库 ▶ 商场里的冷冻柜
本地镜像仓库 ▶ 厨房里的冰箱
Docker镜像 ▶ 冰箱里的土豆牛肉罐头
厨师从冰箱取出罐头后,拿到灶台加热。这罐新出锅的土豆牛肉,便是Docker根据镜像创建好的容器实例。
如果厨师想做的菜冰箱里没有,那就只能去商场购买,这便是服务器连接远程镜像仓库来下载镜像的过程。
------------------------------------------------------------------------------------------
土豆牛肉罐头(冷冻) 也可以进行拆解,通常来讲,Docker镜像会包含精简版的Linux内核、程序运行环境、组件或应用程序。
精简版的Linux内核 ▶ 罐头外壳
程序运行环境 ▶ 罐头中的调味料
组件或应用程序 ▶ 罐头中的土豆和牛肉
冷冻罐头不能直接吃,对应Docker镜像是无法修改的。
容器是根据镜像创建的,正如没购买土豆牛肉罐头就无法做出土豆牛肉这盘预制菜。
------------------------------------------------------------------------------------------
用烹饪类比,甚至还能解释Docker容器化部署之于非容器化部署的优势:
非容器化部署会先在测试环境服务器中准备运行环境 (如Java环境变量),之后部署并启动应用 (如Tomcat)。测试无问题后,再去生产环境的服务器,重复相同操作。此时若有组件版本差异或步骤遗漏,就有上线失败的风险。
一如厨师参加烹饪比赛,在比赛现场做的菜,却与平时做的菜味道不同。
于是预制菜 (Docker容器) 应运而生,完美解决了味道不一和烹饪效率的问题:批量生产的罐头,内容物都是精确配比的,操作简单,只要加热就能还原相同的味道。
正如Docker镜像,只要转化成一个容器实例,简单配置后就能直接运行。
————————————————————————————————————————
【FineOps】
全称:Fine Operation
定义:一个专门用于帆软应用的运维平台。
————————————————————————————————————————
原理:(个人理解)
在Linux服务器中部署FineOps运维平台,实际上是先安装了Docker,然后启动Docker服务,把FineOps各个组件的镜像,实例化成各个容器。
各个容器的用户体系、资源配置(例如“OPS”组件,需要2C4G的基础配置)、网络端口映射都是独立存在且相互隔离的。
了解运维平台组件作用 - 帮助文档
其中包含的“Nginx”组件,让FineOps服务器成为了整个帆软集群的内网关,提供负载转发服务,所有服务的入口、使用都从这个入口访问。
为了方便理解,可以把容器看作阉割版虚拟机,每个容器都有自己的一套端口,自己的一套用户体系。
端口和用户都能自定义映射关系,例如把Nginx容器的80端口映射到宿主机的8080端口,把Nginx容器的root用户映射到宿主机的nginx用户等。
前面提到过Docker是C/S架构:一个Docker集群,主节点部署Docker客户端+Docker服务端,其他从节点,只部署Docker服务端即可。
主节点的Docker客户端,会通过网络远程控制其他节点的Docker服务,进行镜像的下载容器化等。想必这就是为什么FineBI的容器化部署,只需要在浏览器中操作FineOps运维平台,配置一下新服务器的信息即可进行部署的原因。
快速入门 (部署新项目) - 帮助文档
————————————————————————————————————————
以上内容仅为个人学习和理解,如有错误请务必指正,感谢!