CN109901910B - 基于分布式容器的文件拉取或推送方法及装置 - Google Patents

基于分布式容器的文件拉取或推送方法及装置 Download PDF

Info

Publication number
CN109901910B
CN109901910B CN201910043547.2A CN201910043547A CN109901910B CN 109901910 B CN109901910 B CN 109901910B CN 201910043547 A CN201910043547 A CN 201910043547A CN 109901910 B CN109901910 B CN 109901910B
Authority
CN
China
Prior art keywords
file
container
distributed
pulled
pushed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910043547.2A
Other languages
English (en)
Other versions
CN109901910A (zh
Inventor
郭申
赖炳新
杨明邦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhuhai Xishanju Digital Technology Co ltd
Zhuhai Kingsoft Digital Network Technology Co Ltd
Original Assignee
Zhuhai Seasun Mobile Game Technology Co ltd
Zhuhai Kingsoft Online Game Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhuhai Seasun Mobile Game Technology Co ltd, Zhuhai Kingsoft Online Game Technology Co Ltd filed Critical Zhuhai Seasun Mobile Game Technology Co ltd
Priority to CN201910043547.2A priority Critical patent/CN109901910B/zh
Publication of CN109901910A publication Critical patent/CN109901910A/zh
Application granted granted Critical
Publication of CN109901910B publication Critical patent/CN109901910B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种基于分布式容器的文件拉取或推送方法,包括以下步骤:指定各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置;记录各个分布式容器的自定义名称及所在主机的URL,形成各个分布式容器的配置文件;遍历配置文件上所记录URL对应的主机以远程连接相应的主机,并生成相应的容器客户端实例;根据各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置,通过容器客户端实例进行文件的拷贝。本申请还公开了相应的基于分布式容器的文件拉取或推送装置。本申请的有益效果为实现了方便快捷地在多个分布式容器间的文件拷贝和移动。

Description

基于分布式容器的文件拉取或推送方法及装置
技术领域
本发明涉及计算机领域,尤其涉及一种基于分布式容器(Container)的文件拉取或推送方法及装置。
背景技术
操作系统虚拟化通过对真实的计算机硬件设备进行模拟,使得多名用户可以分别通过虚拟化后的操作系统共享使用计算机硬件资源,从而可以高效率地利用计算机硬件资源。同时,由于操作系统虚拟化使得各应用程序及其关联性被隔离,从而每位用户如同在个人计算机上操作独立的操作系统。
例如,作为操作系统虚拟化的典型例子,虚拟机通常运行在诸如服务器等底层硬件的主机设备上,并通过虚拟机管理程序分配内存和CPU等计算机硬件资源到多台虚拟机上。因此,可以根据当前各台虚拟机所请求的计算机硬件资源,动态地进行分配。然而,为了给各位用户提供一个完整独立的应用程序运行环境,虚拟机需要同时包含完整的虚拟硬件堆栈(包括虚拟的网络适配器、存储以及CPU等)。这意味着其自身也拥有完整的操作系统,并对计算机硬件资源抽象化而进行隔离,从而需要将部分由主机设备提供的共享资源占据为自身的专用资源而降低主机设备的总体性能。
相反,作为操作系统虚拟化的另一个例子,容器是一种轻量级的操作系统虚拟化技术。各个容器通过共享主机设备上的系统内核以实现自身的轻量化,并利用进程访问控制隔离技术和进程组管理控制技术等方式隔离各自的用户空间,从而使得多套容器能够并行地运行在同一主机设备上。在现有的技术方案中,尤其在分布式环境下,难免会遇到文件的集中与分发,如分发配置文件到各个机器,或者将各个机器的文件集中到某个机器。例如,基于容器分布式服务部署在15台物理机器上,每个容器均在本物理机器内写日志。如果服务出现问题而需要查看日志,则需要将15台物理机器上的日志文件集中的指定路径下,以方便调试人员查看分析。又例如,当上述15台物理机器的容器已经运行起来,以测试某项服务负载能力时,某个文件需要加入到各个容器中。通常的做法是要么停止服务,打包发布包含待添加文件的容器到各台机器上以再次布置容器;要么是逐台机器和逐个容器单独处理。由于目前关于分布式文件获取与分发的基本都是非容器相关的,也就是没有非常好用的基于容器内外文件拷贝的工具;因此,在分布式服务下,无论是各个不同机器容器内集中数据还是分发数据,都显得繁琐和困难。容器的原生拷贝命令(docker cp)只能实现本机容器之间的内外操作,难以实现多个分布式机器的容器之间的文件操作。
发明内容
本申请的目的是解决现有技术的不足,提供一种基于分布式容器的文件拉取或推送方法及装置,能够获得方便地执行容器间、机器间及容器内外文件拷贝和移动操作的效果。
为了实现上述目的,本申请采用以下的技术方案。
首先,本申请提出一种基于分布式容器的文件拉取或推送方法,包括以下步骤:
S100)指定各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置;
S200)记录各个分布式容器的自定义名称及所在主机的URL,形成各个分布式容器的配置文件;
S300)遍历配置文件上所记录URL对应的主机以远程连接相应的主机,并生成相应的容器客户端实例;
S400)根据各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置,通过容器客户端实例进行文件的拷贝。
进一步地,在本申请的上述方法中,待拉取或推送文件的文件路径及文件名称和拉取或推送后文件的保存位置一并记录在所述配置文件内。
再进一步地,在本申请的上述方法中,所述配置文件以redis数据库的方式缓存。
进一步地,在本申请的上述方法中,所述步骤S300还包括以下子步骤:
S301)由Python脚本读取缓存在redis数据库内的所述配置文件;
S302)基于配置文件所记录主机的URL,通过docker-py库远程连接至各个分布式容器所在的主机;
S303)获取已远程连接主机的容器客户端实例。
进一步地,在本申请的上述方法中,所述步骤S300还包括以下后继处理步骤:
自动生成错误日志以记录远程连接失败的容器,所述错误日志至少包括相关主机的URL及失败类型。
再进一步地,在本申请的上述方法中,所述步骤S400包括以下子步骤:
S401)获取各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置;
S402)调用各个容器客户端实例的get_archive接口,将指定的文件拷贝到相应容器指定的保存位置。
进一步地,在本申请的上述方法中,调用各个容器客户端实例的get_archive接口拷贝文件时,添加容器标识到被拷贝文件的文件名称。
其次,本申请还提出一种基于分布式容器的文件拉取或推送装置,包括以下模块:初始化模块,用于指定各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置;记录模块,用于记录各个分布式容器的自定义名称及所述容器所在主机的URL,形成各个分布式容器的配置文件;遍历模块,用于遍历配置文件上所记录URL对应的主机以远程连接相应的主机,并生成相应的容器客户端实例;拷贝模块,用于根据各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置,通过容器客户端实例进行文件的拷贝。
进一步地,在本申请的上述装置中,待拉取或推送文件的文件路径及文件名称和拉取或推送后文件的保存位置一并记录在所述配置文件内。
再进一步地,在本申请的上述装置中,所述配置文件以redis数据库的方式缓存。
进一步地,在本申请的上述装置中,所述遍历模块还包括以下子模块:读取模块,用于由Python脚本读取缓存在redis数据库内的所述配置文件;连接模块,用于基于配置文件所记录主机的URL,通过docker-py库远程连接至各个分布式容器所在的主机;第一获取模块,用于获取已远程连接主机的容器客户端实例。
进一步地,在本申请的上述装置中,所述遍历模块还包括以下后继处理模块:日志模块,用于自动生成错误日志以记录远程连接失败的容器,所述错误日志至少包括相关主机的URL及失败类型。
再进一步地,在本申请的上述装置中,所述拷贝模块包括以下子模块:第二获取模块,用于获取各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置;调用模块,用于调用各个容器客户端实例的get_archive接口,将指定的文件拷贝到相应容器指定的保存位置。
进一步地,在本申请的上述装置中,调用各个容器客户端实例的get_archive接口拷贝文件时,添加容器标识到被拷贝文件的文件名称。
最后,本申请还提出一种计算机可读存储介质,其上存储有计算机指令。该指令被处理器执行时实现以下方法的步骤:
S100)指定各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置;
S200)记录各个分布式容器的自定义名称及所在主机的URL,形成各个分布式容器的配置文件;
S300)遍历配置文件上所记录URL对应的主机以远程连接相应的主机,并生成相应的容器客户端实例;
S400)根据各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置,通过容器客户端实例进行文件的拷贝。
进一步地,在本申请的上述指令被处理器执行的过程中,待拉取或推送文件的文件路径及文件名称和拉取或推送后文件的保存位置一并记录在所述配置文件内。
再进一步地,在本申请的上述指令被处理器执行的过程中,所述配置文件以redis数据库的方式缓存。
进一步地,在本申请的上述指令被处理器执行的过程中,所述步骤S300还包括以下子步骤:
S301)由Python脚本读取缓存在redis数据库内的所述配置文件;
S302)基于配置文件所记录主机的URL,通过docker-py库远程连接至各个分布式容器所在的主机;
S303)获取已远程连接主机的容器客户端实例。
进一步地,在本申请的上述指令被处理器执行的过程中,所述步骤S300还包括以下后继处理步骤:
自动生成错误日志以记录远程连接失败的容器,所述错误日志至少包括相关主机的URL及失败类型。
再进一步地,在本申请的上述指令被处理器执行的过程中,所述步骤S400包括以下子步骤:
S401)获取各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置;
S402)调用各个容器客户端实例的get_archive接口,将指定的文件拷贝到相应容器指定的保存位置。
进一步地,在本申请的上述指令被处理器执行的过程中,调用各个容器客户端实例的get_archive接口拷贝文件时,添加容器标识到被拷贝文件的文件名称。
本申请的有益效果为:通过配置文件指定各个容器内拉取和推送文件及其拷贝和移动后的位置,实现了方便快捷地在多个分布式容器间的文件拷贝和移动。
附图说明
图1所示为现有的虚拟机和容器结构示意图;
图2所示为本申请所公开的基于分布式容器的文件拉取或推送方法的方法流程图;
图3所示为本申请的一个实施例中,远程连接主机的子方法流程图;
图4所示为本申请的一个实施例中,拉取或推送文件的子方法流程图;
图5所示为本申请所公开的基于分布式容器的文件拉取或推送装置的模块结构图。
具体实施方式
以下将结合实施例和附图对本申请的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本申请的目的、方案和效果。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,如无特殊说明,当某一特征被称为“固定”、“连接”在另一个特征,它可以直接固定、连接在另一个特征上,也可以间接地固定、连接在另一个特征上。此外,本申请中所使用的上、下、左、右等描述仅仅是相对于附图中本申请各组成部分的相互位置关系来说的。在本申请和所附权利要求书中所使用的单数形式的“一种”、“该”和“所述”也旨在包括多数形式,除非上下文清楚地表示其他含义。
此外,除非另有定义,本文所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本文说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本申请。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。
应当理解,尽管在本申请中可能采用术语第一、第二、第三等来描述各种元件,但这些元件不应限于这些术语。这些术语仅用来将同一类型的元件彼此区分开。例如,在不脱离本申请范围的情况下,第一元件也可以被称为第二元件,类似地,第二元件也可以被称为第一元件。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”。
参考图1所示的现有的虚拟机和容器结构示意图。作为虚拟化技术的两个典型例子,虚拟机和容器包含应用程序及运行该应用程序的所必需的组件(例如系统的二进制文件及库),并分别通过运行在物理计算机上的虚拟机监控器(Hypervisor)和容器引擎(Docker Engine)申请位于系统底层的计算机硬件资源。对于虚拟机和容器,底层的单个计算机硬件资源(例如服务器、存储设备、中央处理器、I/O端口和网络端口等)由于被虚拟化而可以充当多个可被共享的逻辑资源。同时,主机操作系统(Operation System,OS)亦可以为上述虚拟机监控器和容器引擎与底层计算机硬件资源的交互提供进一步优化。例如,主机OS可支持多个空间上相互隔离的用户通过虚拟机或容器共享底层的计算机硬件资源。其中主机OS的一些示例可以是
Figure BDA0001948391300000051
Figure BDA0001948391300000052
然而,正如前文所指出,虚拟机由于其自身操作系统需要专门占用更多的资源并包含更多的处理开销,从而降低了主机设备的总体性能。虽然容器通过共享主机OS的内核而实现自身的轻量化,但是由于同一机器上容器之间共享该物理机器的网络资源,因此容器的原生拷贝命令docker cp只能实现在本机器上的容器之间的文件拷贝操作。
因此,为了充分利用容器的轻量化优势,并实现分布式容器之间的文件拉取或推送,本申请提出了一种基于分布式容器的文件拉取或推送方法。参考图2所示的方法流程图,在本申请的一个或多个实施例中,上述基于分布式容器的文件拉取或推送方法包括以下步骤:
S100)指定各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置;
S200)记录各个分布式容器的自定义名称及所在主机的URL,形成各个分布式容器的配置文件;
S300)遍历配置文件上所记录URL对应的主机以远程连接相应的主机,并生成相应的容器客户端实例;
S400)根据各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置,通过容器客户端实例进行文件的拷贝。
具体地,待拉取或推送文件的文件路径及文件名称和拉取或推送后文件的保存位置可采用以下方法,与各个分布式容器的自定义名称及所在主机的URL一并记录在所述配置文件内。
[pull]
local_path=/home/logs/containers/
container_file=/home/work/server/logs/error.log
[push]
container_path=/home/work/server/conf/
local_path=/home/demo/server/conf/proxy.conf
[container]
c780a139_slaver_74=tcp://10.20.77.94:2375
c780a139_slaver_72=tcp://10.20.69.251:2375
c780a139_slaver_73=tcp://10.20.77.96:2375
c780a139_slaver_34=tcp://10.20.77.99:2375
c780a139_slaver_47=tcp://10.20.69.251:2375
c780a139_slaver_10=tcp://10.20.75.122:2375
其中,pull配置下的local_path和container_file变量分别指定拉取后本机文件路径和容器内需要被拉取的文件;相应地,push配置下的local_file和container_path变量分别指定了需要推送的本机文件和容器内需要被推送文件保存的路径。container配置指定了分布式容器的自定义名称及该容器所在机器的URL。上述配置文件可以文本文件的方法存储,从而可以方便快捷地读/写该配置文件。例如分布式容器的维护人员可以动态地定期更新各台机器所分配的URL,或者增加/删除容器。可替代地,在本申请的一个或多个实施例中,上述配置也可以直接通过批处理文件以命令行的方式实现。此时,分布式容器的维护人员只需要维护用于执行上述方法的批处理文件内与分布式容器相关的配置参数(例如上述拉取后本机文件路径和容器内需要被拉取的文件等等),然后再直接执行该批处理文件以实现相关文件的拉取或推送。
进一步地,在本申请的上述一个或多个实施例中,所述配置文件以redis数据库的方式缓存。尤其是当在多台分布式机器上搭建大量容器时,由于redis是一个高性能的key-value数据库,同时能够支持主从同步(即数据可以从主服务器向任意数量的从服务器上同步,且从服务器可以是关联其他从服务器的主服务器),从而更为方便快捷地获取全部分布式容器的上述配置参数,并进行管理。
具体地,参照图3所示的子方法流程图,在本申请的上述一个或多个实施例中,所述步骤S300还包括以下子步骤:
S301)由Python脚本读取缓存在redis数据库内的所述配置文件;
S302)基于配置文件所记录主机的URL,通过docker-py库远程连接至各个分布式容器所在的主机;
S303)获取已远程连接主机的容器客户端实例。
具体地,分布式容器之间的远程连接可以通过docker-py库中所提供的API接口实现。分布式容器的远程操作(例如文件的拷贝和移动)也可以通过已远程连接主机的容器客户端实例而方便地执行,从而实现多个分布式容器之间的文件拷贝转移操作。
然而,可能由于分布式容器的各个模块之间版本不切合、机器所配置的URL错误等原因而导致利用上述docker-py库实现分布式容器之间的远程连接可能会导致失败。为了方便调整各个分布式容器的参数以实现它们之间的远程连接,在本申请的上述一个或多个实施例中,所述步骤S300还包括以下后继处理步骤:自动生成错误日志以记录远程连接失败的容器,所述错误日志至少包括相关主机的URL及失败类型。错误日志可以保存为可读的外部文件,以方便分布式容器的维护人员针对性地对调整各个分布式容器的配置。
参照图4所示的子方法流程图,在本申请的上述一个或多个实施例中,所述步骤S400包括以下子步骤:
S401)获取各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置;
S402)调用各个容器客户端实例的get_archive接口,将指定的文件拷贝到相应容器指定的保存位置。
上述执行步骤可以Python脚本的方式实现,从而实现一键完成相关文件的拉取或推送。同时,由于上述方法所调用到的get_archive等接口都是原生的,因此相关命令的执行稳定高效。此外,为了方便地区别从各个分布式容器所拉取的文件,在本申请的上述一个或多个实施例中,在调用各个容器客户端实例的get_archive接口拷贝文件时,添加容器标识到被拷贝文件的文件名称。例如,该容器标识可以是被拉取的文件名称的前缀,该前缀为各个分布式容器的名称。
本申请还提出了一种基于分布式容器的文件拉取或推送装置。参考图5所示的模块结构图,在本申请的一个或多个实施例中,上述基于分布式容器的文件拉取或推送装置包括以下模块:初始化模块,用于指定各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置;记录模块,用于记录各个分布式容器的自定义名称及所述容器所在主机的URL,形成各个分布式容器的配置文件;遍历模块,用于遍历配置文件上所记录URL对应的主机以远程连接相应的主机,并生成相应的容器客户端实例;拷贝模块,用于根据各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置,通过容器客户端实例进行文件的拷贝。具体地,待拉取或推送文件的文件路径及文件名称和拉取或推送后文件的保存位置可采用以下方法,与各个分布式容器的自定义名称及所在主机的URL一并记录在所述配置文件内。
[pull]
local_path=/home/logs/containers/
container_file=/home/work/server/logs/error.log
[push]
container_path=/home/work/server/conf/
local_path=/home/demo/server/conf/proxy.conf
[container]
c780a139_slaver_74=tcp://10.20.77.94:2375
c780a139_slaver_72=tcp://10.20.69.251:2375
c780a139_slaver_73=tcp://10.20.77.96:2375
c780a139_slaver_34=tcp://10.20.77.99:2375
c780a139_slaver_47=tcp://10.20.69.251:2375
c780a139_slaver_10=tcp://10.20.75.122:2375
其中,pull配置下的local_path和container_file变量分别指定拉取后本机文件路径和容器内需要被拉取的文件;相应地,push配置下的local_file和container_path变量分别指定了需要推送的本机文件和容器内需要被推送文件保存的路径。container配置指定了分布式容器的自定义名称及该容器所在机器的URL。上述配置文件可以文本文件的方法存储,从而可以方便快捷地读/写该配置文件。例如分布式容器的维护人员可以动态地定期更新各台机器所分配的URL,或者增加/删除容器。可替代地,在本申请的一个或多个实施例中,上述配置也可以直接通过批处理文件以命令行的方式实现。此时,分布式容器的维护人员只需要维护用于执行上述方法的批处理文件内与分布式容器相关的配置参数(例如上述拉取后本机文件路径和容器内需要被拉取的文件等等),然后再直接执行该批处理文件以实现相关文件的拉取或推送。
进一步地,在本申请的上述一个或多个实施例中,所述配置文件以redis数据库的方式缓存。尤其是当在多台分布式机器上搭建大量容器时,由于redis是一个高性能的key-value数据库,同时能够支持主从同步(即数据可以从主服务器向任意数量的从服务器上同步,且从服务器可以是关联其他从服务器的主服务器),从而更为方便快捷地获取全部分布式容器的上述配置参数,并进行管理。
具体地,在本申请的上述一个或多个实施例中,所述遍历模块还包括以下子模块:读取模块,用于由Python脚本读取缓存在redis数据库内的所述配置文件;连接模块,用于基于配置文件所记录主机的URL,通过docker-py库远程连接至各个分布式容器所在的主机;第一获取模块,用于获取已远程连接主机的容器客户端实例。具体地,分布式容器之间的远程连接可以通过docker-py库中所提供的API接口实现。分布式容器的远程操作(例如文件的拷贝和移动)也可以通过已远程连接主机的容器客户端实例而方便地执行,从而实现多个分布式容器之间的文件拷贝转移操作。
然而,可能由于分布式容器的各个模块之间版本不切合、机器所配置的URL错误等原因而导致利用上述docker-py库实现分布式容器之间的远程连接可能会导致失败。为了方便调整各个分布式容器的参数以实现它们之间的远程连接,在本申请的上述一个或多个实施例中,所述遍历模块还包括以下后继处理模块:日志模块,用于自动生成错误日志以记录远程连接失败的容器,所述错误日志至少包括相关主机的URL及失败类型。错误日志可以保存为可读的外部文件,以方便分布式容器的维护人员针对性地对调整各个分布式容器的配置。
在本申请的上述一个或多个实施例中,所述拷贝模块包括以下子模块:第二获取模块,用于获取各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置;调用模块,用于调用各个容器客户端实例的get_archive接口,将指定的文件拷贝到相应容器指定的保存位置。上述模块可以Python脚本的方式实现,从而实现一键完成相关文件的拉取或推送。同时,由于上述方法所调用到的get_archive等接口都是原生的,因此相关命令的执行稳定高效。此外,为了方便地区别从各个分布式容器所拉取的文件,在本申请的上述一个或多个实施例中,在调用各个容器客户端实例的get_archive接口拷贝文件时,添加容器标识到被拷贝文件的文件名称。例如,该容器标识可以是被拉取的文件名称的前缀,该前缀为各个分布式容器的名称。
应当认识到,本申请的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。该方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。
进一步地,该方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本申请的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文该步骤的指令或程序时,本文所述的申请包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本申请所述的方法和技术编程时,本申请还包括计算机本身。
计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本申请优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。
因此,应以说明性意义而不是限制性意义来理解本说明书和附图。然而,将明显的是:在不脱离如权利要求书中阐述的本申请的更宽广精神和范围的情况下,可以对本申请做出各种修改和改变。
其他变型在本申请的精神内。因此,尽管所公开的技术可容许各种修改和替代构造,但在附图中已示出并且在上文中详细描述所示的其某些实施例。然而,应当理解,并不意图将本申请局限于所公开的一种或多种具体形式;相反,其意图涵盖如所附权利要求书中所限定落在本申请的精神和范围内的所有修改、替代构造和等效物。

Claims (5)

1.一种基于分布式容器的文件拉取或推送方法,其特征在于,包括以下步骤:
S100)指定各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置;
S200)记录各个分布式容器的自定义名称及所在主机的URL,形成各个分布式容器的配置文件;
S300)遍历配置文件上所记录URL对应的主机以远程连接相应的主机,并生成相应的容器客户端实例;
S400)根据各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置,通过容器客户端实例进行文件的拷贝;
其中,所述配置文件以redis数据库的方式缓存;
所述步骤S300还包括以下子步骤:
S301)由Python脚本读取缓存在redis数据库内的所述配置文件;
S302)基于配置文件所记录主机的URL,通过docker-py库远程连接至各个分布式容器所在的主机;
S303)获取已远程连接主机的容器客户端实例;
所述步骤S300还包括以下后继处理步骤:
自动生成错误日志以记录远程连接失败的容器,所述错误日志至少包括相关主机的URL及失败类型;
所述步骤S400包括以下子步骤:
S401)获取各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置;
S402)调用各个容器客户端实例的get_archive接口,将指定的文件拷贝到相应容器指定的保存位置。
2.根据权利要求1所述的方法,其特征在于,待拉取或推送文件的文件路径及文件名称和拉取或推送后文件的保存位置一并记录在所述配置文件内。
3.根据权利要求1所述的方法,其特征在于,调用各个容器客户端实例的get_archive接口拷贝文件时,添加容器标识到被拷贝文件的文件名称。
4.一种基于分布式容器的文件拉取或推送装置,其特征在于,包括以下模块:
初始化模块,用于指定各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置;
记录模块,用于记录各个分布式容器的自定义名称及所述容器所在主机的URL,形成各个分布式容器的配置文件;
遍历模块,用于遍历配置文件上所记录URL对应的主机以远程连接相应的主机,并生成相应的容器客户端实例;
拷贝模块,用于根据各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置,通过容器客户端实例进行文件的拷贝;
其中,所述配置文件以redis数据库的方式缓存;
遍历模块中还包括以下单元:
读取单元,用于由Python脚本读取缓存在redis数据库内的所述配置文件;
连接单元,用于基于配置文件所记录主机的URL,通过docker-py库远程连接至各个分布式容器所在的主机;
获取单元,用于获取已远程连接主机的容器客户端实例;
日志生成单元,用于自动生成错误日志以记录远程连接失败的容器,所述错误日志至少包括相关主机的URL及失败类型;
所述拷贝模块包括以下子模块:
第二获取模块,用于获取各个分布式容器内待拉取或推送文件的文件路径及文件名称,以及拉取或推送后文件的保存位置;
调用模块,用于调用各个容器客户端实例的get_archive接口,将指定的文件拷贝到相应容器指定的保存位置。
5.一种计算机可读存储介质,其上存储有计算机指令,其特征在于该指令被处理器执行时实现如权利要求1至3中任一项所述的方法的步骤。
CN201910043547.2A 2019-01-17 2019-01-17 基于分布式容器的文件拉取或推送方法及装置 Active CN109901910B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910043547.2A CN109901910B (zh) 2019-01-17 2019-01-17 基于分布式容器的文件拉取或推送方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910043547.2A CN109901910B (zh) 2019-01-17 2019-01-17 基于分布式容器的文件拉取或推送方法及装置

Publications (2)

Publication Number Publication Date
CN109901910A CN109901910A (zh) 2019-06-18
CN109901910B true CN109901910B (zh) 2021-12-07

Family

ID=66943891

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910043547.2A Active CN109901910B (zh) 2019-01-17 2019-01-17 基于分布式容器的文件拉取或推送方法及装置

Country Status (1)

Country Link
CN (1) CN109901910B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111984603B (zh) * 2020-07-06 2024-05-24 珠海西山居数字科技有限公司 一种采集远程容器文件信息的方法及系统
CN113703866B (zh) * 2021-08-25 2024-04-26 上海哔哩哔哩科技有限公司 配置中心信息同步方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105824614A (zh) * 2015-12-15 2016-08-03 广东亿迅科技有限公司 基于Docker的分布式开发环境的搭建方法及装置
CN105872019A (zh) * 2016-03-23 2016-08-17 北京搜狐新媒体信息技术有限公司 一种Web端登录Docker容器的方法和装置
CN106888233A (zh) * 2015-12-15 2017-06-23 北京新媒传信科技有限公司 数据更新系统及方法
CN107608907A (zh) * 2017-09-30 2018-01-19 华为技术有限公司 一种存储系统中垃圾回收的方法及装置
CN108363747A (zh) * 2018-01-26 2018-08-03 厦门亿联网络技术股份有限公司 Assets文件批量拷贝方法
CN108958971A (zh) * 2018-06-14 2018-12-07 北京小米移动软件有限公司 信息的备份方法、装置及设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8020177B2 (en) * 2007-07-27 2011-09-13 Composite Ideas, Llc Contained command invocation middleware framework
US9396156B2 (en) * 2012-04-26 2016-07-19 Connected Data, Inc. System and method for socially organized storage and shared access to storage appliances
US9075638B2 (en) * 2012-08-14 2015-07-07 Atlassian Corporation Pty Ltd. Efficient hosting of virtualized containers using read-only operating systems
US10824455B2 (en) * 2016-12-02 2020-11-03 Nutanix, Inc. Virtualized server systems and methods including load balancing for virtualized file servers
CN106843837B (zh) * 2016-12-21 2020-02-25 中电科华云信息技术有限公司 openstack组件容器化的构建方法
US9983891B1 (en) * 2017-03-21 2018-05-29 Veritas Technologies Llc Systems and methods for distributing configuration templates with application containers
CN107733977B (zh) * 2017-08-31 2020-11-03 北京百度网讯科技有限公司 一种基于Docker的集群管理方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105824614A (zh) * 2015-12-15 2016-08-03 广东亿迅科技有限公司 基于Docker的分布式开发环境的搭建方法及装置
CN106888233A (zh) * 2015-12-15 2017-06-23 北京新媒传信科技有限公司 数据更新系统及方法
CN105872019A (zh) * 2016-03-23 2016-08-17 北京搜狐新媒体信息技术有限公司 一种Web端登录Docker容器的方法和装置
CN107608907A (zh) * 2017-09-30 2018-01-19 华为技术有限公司 一种存储系统中垃圾回收的方法及装置
CN108363747A (zh) * 2018-01-26 2018-08-03 厦门亿联网络技术股份有限公司 Assets文件批量拷贝方法
CN108958971A (zh) * 2018-06-14 2018-12-07 北京小米移动软件有限公司 信息的备份方法、装置及设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Docker 远程 python API 操作容器一例;刘天斯;《https://cloud.tencent.com/developer/article/1005363》;20170629;1-5 *
How get file from docker container in python;Alexei Cheban 等;《https://stackoverflow.com/questions/50552501/how-get-file-from-docker-container-in-python》;20180527;1 *

Also Published As

Publication number Publication date
CN109901910A (zh) 2019-06-18

Similar Documents

Publication Publication Date Title
US11593149B2 (en) Unified resource management for containers and virtual machines
US11210745B2 (en) Method and system for providing inter-cloud services
US10447806B1 (en) Workload scheduling across heterogeneous resource environments
US10042628B2 (en) Automated upgrade system for a service-based distributed computer system
EP1934794B1 (en) Apparatus, method and system for rapid delivery of distributed applications
EP2457176B1 (en) Virtual-machine based application-service provision
US20200106737A1 (en) Systems and methods for implementing address translation services
US10740133B2 (en) Automated data migration of services of a virtual machine to containers
US10057377B2 (en) Dynamic resolution of servers in a distributed environment
US10838754B2 (en) Virtualized systems having hardware interface services for controlling hardware
US20170364844A1 (en) Automated-application-release-management subsystem that supports insertion of advice-based crosscutting functionality into pipelines
Wang et al. Provide virtual machine information for grid computing
US20170005878A1 (en) Method and system for testing and analyzing management servers
US20200034484A1 (en) User-defined analysis of distributed metadata
US20190334768A1 (en) Methods for synchronizing configurations between computing systems using human-computer interfaces
CN109901910B (zh) 基于分布式容器的文件拉取或推送方法及装置
EP4124953A2 (en) Computing cluster bring-up on any one of a plurality of different public cloud infrastructures
CN116594978A (zh) 基于用户态文件系统的前端模块管理器、管理方法及系统
CN109871258A (zh) 基于分布式容器的修改主机配置的方法及装置
US11385881B2 (en) State-driven virtualization system imaging
US11042665B2 (en) Data connectors in large scale processing clusters
CN112468349B (zh) 适用于FT2000+平台部署Ceph的主节点
CN116629382B (zh) 基于Kubernetes的机器学习平台对接HPC集群的方法、装置、系统
JP7316591B2 (ja) モノリシックレガシーアプリケーションに基づくマイクロサービスのコンテナ化展開
US20210124765A1 (en) System and method for catalog service

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 519000 Room 102, 202, 302 and 402, No. 325, Qiandao Ring Road, Tangjiawan Town, high tech Zone, Zhuhai City, Guangdong Province, Room 102 and 202, No. 327 and Room 302, No. 329

Patentee after: Zhuhai Jinshan Digital Network Technology Co.,Ltd.

Patentee after: Zhuhai Xishanju Digital Technology Co.,Ltd.

Address before: Building 3, Jinshan Software Park, 325 Qiandao Ring Road, Tangjiawan Town, high tech Zone, Zhuhai, Guangdong 519000

Patentee before: ZHUHAI KINGSOFT ONLINE GAME TECHNOLOGY Co.,Ltd.

Patentee before: ZHUHAI SEASUN MOBILE GAME TECHNOLOGY Co.,Ltd.

CP03 Change of name, title or address