DevOps | 自动化部署前奏及容器可视化管理

​在经典的DevOps持续交付流程的开源技术栈中,从项目生命周期管理(JIRA)一直到系统上线监控(zabbix),中间的开发、发布及部署基本都大同小异,而系统管理和运维却会根据技术人员的经验会有很大的不同,而目标都是保证系统稳定且高效的运行,要实现高效的系统管理和稳定的运维目标,最好的办法就是标准化和自动化,终极目标是系统产生问题的时候有自我监测和恢复能力。要实现自动化,需要信息系统有自我伸缩的功能,容器化及云部署具备这样的能力。


为了向自动化迈进我们引入了zabbix的docker部署来做探路石(点击参考前文),但是仍需要复杂的启动命令手工操作,无法发挥docker的功效,所以需要简化启动方式,为实现自动化打基础,故而引入了docker-compose部署及portainer可视化容器管理,特此分享总结。


自定义镜像构建

我们都知道docker镜像是层级结构组成,一个docker镜像由多个可读的镜像层组成,然后运行的容器会在这个docker的镜像上面多加一层可写的容器层,任何的对文件的更改都只存在此容器层。因此任何对容器的操作均不会影响到镜像。


要实现一键部署,必须更改官方镜像文件,官方的zabbix-server镜像有中文兼容性问题以及zabbx-web时区显示问题,通过之前的解决方式结合Dockfile自定义镜像文件以供后续docker compose的部署使用:

FROM zabbix/zabbix-server-mysql:latest

MAINTAINER skqclub

RUN apk add curl

ADD simkai.ttf/usr/share/zabbix/assets/fonts

ADD defines.inc.php/usr/share/zabbix/include

EXPOSE10051

自定义镜像构建命令:

docker image build -t 镜像名:tag -fDockfile文件名 .

当然也可以通过save或者export方式可以得到本地镜像文件,这里要特地提下save和export的区别,以免后面导入后没有达到预期的效果。docker save保存的是镜像(image),docker export保存的是容器(container);也就是说save无法保存经容器更改后的完整内容,且导出的文件是有层级结构的所以只能通过load载入,而export则可以且导出的文件内容是类似文件系统的结构,可以使用load和import载入;


DockerCompose部署

有了自定义的镜像之后便可以使用Docker Compose部署了,它是一个可以定义和运行多个容器应用的工具,用一个docker-compose.yml文件便可以配置所依赖的容器,并且直接一条启动命令就可以实现所有依赖容器的启动顺序。


在之前CentOS7.6上装有docker1.13.1的版本上,直接从github官网下载release版本的程序即可使用,要卸载也只需删除这个二进制文件就行了,安装步骤如下:

1.把下载好的二进制文件上传到服务器的/usr/local/bin/目录下,并重命名为docker-compose;

2.设置可执行权限:

chmod +x /usr/local/bin/docker-compose;

一般上面两步就可以直接使用docker compose了,不行就增加一个执行链接路径到/usr/bin或者其他系统路径下面:

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose 

Docker Compose的使用关键点离不开Compose文件里面容器服务的配置以及各容器的依赖关系的编写,其中compose文件版本与docker的对应关系如下:

Compose file formatDocker Engine

11.9.0+

2.01.10.0+

2.11.12.0+

2.2, 3.0, 3.1, 3.21.13.0+

2.3, 3.3,  3.4, 3.517.06.0+

2.417.12.0+

3.618.02.0+

3.718.06.0+

这里我们在Centos7.6里装的docker版本是1.13.1所以3.2以下的compose版本都是支持的,将上一篇文章基于docker的zabbix部署实战中zabbix-server和zabbix-proxy直接启动docker run的命令写入到compose文件里,然后通过一条命令docker-compose up –d就可以启动和使用服务,相比之前三条独立的命令,docker-compose可以将各容器组件化,使得一键部署成为可能


可视化管理

要实现docker的可视化管理,不得不说portainer。它是Docker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能,基本能满足中小型单位对容器管理的全部需求。

查看容器列表

执行容器操作

查看运行状态

总结任何技术和工具的终极目标是解放生产力,我们的目标是将“人”从系统管理的环节中抽离出来,让工程师解放双手,“喝着咖啡,远离背锅”不是梦!

 文章来源:微信公众号(思快奇)

参考资料:

Docker-compose官网

Portainer官网

CSDN:docker中save和export的区别

你可能感兴趣的:(DevOps | 自动化部署前奏及容器可视化管理)