全局命令:docker远程管理ds

原始需求

docker项目开发一个命令脚本,可以管理多个ssh 服务器上的docker实例,持久化在 modules/system/service/docker_ssh.sh,提供一个全局命令 ds
该命令管理自己的ssh端点配置,共享remmin的session配置权限
local本机的docker目录在 /s500data/docker/docker实例目录名
本机备份或同步服务端docker的目录在 /s500data/docker/服务器别名全名/docker实例目录名,同步备份的时候,本机的服务器别名目录会自动识别匹配
ds list [local/arm/ghost/v100等服务器别名全名,可以多个或空则视作all] [docker目录名全名,可以多个或空视作all]
罗列 本机/oracle arm/oracle ghost/v100或v100tailscale服务器上 docker实例列表
按服务器分组展示docker目录和实例列表,字段:服务器别名,目录名(每个服务器会配置docker目录所在路径,这里只展示目录名),目录总大小 docker实例状态(一个目录下可能有多个yml实例关联出的多个实例,没有在运行则空), NAME,          CPU %,     MEM USAGE / LIMIT   MEM % ,    NET I/O,         BLOCK I/O,         PIDS, docker logs大小, image, version,   
ds sync/cp [source 服务器别名全名1,全名2,local指本机] [target 服务器别名全名 local指本机] [docker子目录全名多个,留空视作all] 对比同名docker目录文件变动,sync双向同步或cp单向同步(跳过判断为一致的文件的增量同步逻辑),sync有一侧不存在的docker子目录则忽略跳过,cp单向同步时,target服务器的docker子目录不存在则自动创建
ds down/up/up/stat -d/logs/restart [source 服务器别名全名1,local指本机,不允许空且只能传一个值]  [docker子目录全名多个,不允许空且只能传一个值] [-f xxx.yml 留空则操作默认yml] 操作服务器的某个docker子目录 默认yml 或指定yml的docker运行实例
ds vi [source 服务器别名全名1,local指本机,不允许空且只能传一个值]  [docker子目录全名多个,不允许空且只能传一个值] [-f xxx.yml 留空则操作默认yml] 修改服务器的某个docker子目录 默认yml 或指定yml文件
ds rm [source 服务器别名全名1,local指本机,不允许空且只能传一个值]  [docker子目录全名多个,不允许空且只能传一个值] [-f或-y或--yes] 终止docker实例并删除目录,需要二次确认,可以加 -f 强制处理
ds 显示命令帮助