网络知识 娱乐 Docker如何安装部署自动化运维调度平台TASKCTL

Docker如何安装部署自动化运维调度平台TASKCTL

介绍: TASKCTL是一款批量调度自动化技术专业产品

制作镜像

由于在dockerhub上没有查询到有关于TASKCTL的镜像就只能自己制作了,但由于本人仅是对软进 行件部署安装,没有实际的应用场景,所有制作的镜像也仅提供了最基础的运行环境。这也是给想要 在Docker上部署TASKCTL的小伙伴提供一点思路,可以根据个人的不同需求来定制自己的镜像。

准备工作

首先从官网下载安装包 (cir_linux_64_8.0.tar、taskctl-web-8.0.tar)

TASKCTL下载安装地址 :www.taskctl.com

Docker拉取一个centos的基本镜像:

docker pull centosn## centos latest 5d0da3dc9764 9 months ago 231MB

制作taskctl-base镜像

先启动一个centos容器,将cir_linux_64_8.0.tar包copy到容器中。

# 后台启动centos并将日志输出到黑洞文件,这样防止无交互容器直接停止ndocker run -d --name taskctl-base centos tail -f /dev/nulln# copy 两个压缩包到容器的/root 目录下(这个根据个人喜好到哪个目录)ndocker cp 包所在位置/cir_linux_64_8.0.tar taskctl-base:/rootn# 进入容器ndocker exec -it taskctl-base /bin/bash

由于安装包中用到了诸如 ifconfig 、vim的基础命令(具体需求哪些我也没仔细测),没有的话安 装会报错,所以需要安装一下基础命令。

yum install net-tools.x86_64 -ynyum install vim -y

如果报错:Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

进入/etcyum.repos.d/目录修改centos文件内容:

1 sed-i's/mirrorlist/#mirrorlist/g'/etc/yum.repos.d/CentOS-*n2 sed-i's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

进入容器测试安装一次,如果安装成功那么就可以打包成基础镜像了。安装教程官网也有,就是 linux下安装TASKCTL,这里就简要说一下。

#配置环境变量nvim/etc/profilen#写入内容nexportTASKCTLDIR=$HOME/taskctlnexportPATH=$PATH:$TASKCTLDIR/bin:.n#生效nsource/etc/profilen#查看centos的ip地址,安装的时候用(我这里是127.17.0.2)n# 安装java环境nyum install java-1.8.0-openjdk-devel.x86_64

安装TASKCTL核心服务

cd/root/cirinst/ n./inst

选择2.自定义安装---->调度服务安装(无高可靠)------>输入ip(127.17.0.2) ----- >端口

Docker如何安装部署自动化运维调度平台TASKCTL

初始化节点并启动

# 初始化nctlinitn#启动nctlstartn#查看基本信息,选择1,节点基本信息 6 ctlninfoDocker如何安装部署自动化运维调度平台TASKCTL

启动web服务(安装了java环境以后),直接解压taskctl-web包运行包下的./startup.sh脚本。 到此处安装成功。确认环境和安装包都没有问题,那么就可以制作镜像了。

#退出并停止容器 nexit

提交镜像

1.docker commit -a="huangrui" -m="taskctl" taskctl-base huangrui/taskctl-base

制作基础镜像完成。

启动服务

上面制作的基础镜像中带有核心的安装包和web的安装包,满足了taskctl基础环境。一下所有 的容器也是在此镜像的基础上搭建的。

新建Docker网络

docker network create --driver bridge --subnet 172.17.0.0/16 --gateway 172.17.0.1 taskctl-network

新建所有的taskctl服务都是用自建的docker-network网络,这样就无需使用ip可以直接使用容器 名进行识别,也减少了由于网络不通出现的错误。

启动task-service容器

# 80 端口是web服务的端口,配置文件在/root/taskctl-web-8.0.010/conf/application.yml中ndocker run -d -p 8888:80 --name docker-task8 huangrui/taskctl-basen# 启动核心服务ndocker exec -it docker-task8 ctlinitndocker exec -it docker-task8 ctlstartndocker exec -it docker-task8 /root/taskctl-web-8.0.010/start.sh

到此访问IP:8888就可以使用TASKCTL服务了

代理节点

代理节点的安装和service的其实大同小异,进入taskctl-base中,在安装task服务的时候选择代理 节点安装,然后退出容器,保存镜像即可。这样吧service节点和代理节点镜像分开,对于批量启动仅 需要修改代理的IP即可。

其他

由于本教程仅提供思路,所有就没有上传我的镜像,制作起来也不难。主要遇到的坑在于安装代理 节点的时候容器的IP和已安装的节点IP不同,这样批量启动的时候每个容器都去重新安装属实不舒服, 提供两个解决思路:

1.使用Docker网络,在制作镜像时候配置容器host:

格式: 镜像名称 ifconfig中的IP

2. 使用脚本,在大量启动代理节点时修改/root/taskctl/conf目录下的配置地址(ifconfig),也 可以使用启动时固定写死IP

Docker如何安装部署自动化运维调度平台TASKCTL