宿主机进程挂载到容器内_一种挂载宿主机目录到容器环境中的方法及装置与流程...

本发明涉及计算机技术领域,具体涉及一种挂载宿主机目录到容器环境中的方法及装置。

背景技术:

在目前主流的容器实现方案中,在启动新的容器时可以通过目录挂载参数dockerrun-v/hostpath:/containerpathimagename将宿主机的目录挂载到容器环境中;也可以通过dockercp在宿主机和容器之间拷贝文件目录。

其中,dockercp方案在docker服务挂起、docker基本命令不可用的极端情况下,无法正常使用,导致获取不到诊断问题的关键信息。

另外,dockerrun方案,只能在容器创建和启动时为容器挂载宿主机目录,无法在容器运行过程中为容器挂载宿主机目录。但是,在容器创建和启动时,是否需要挂载宿主机目录可能尚未确定,而是在容器的运行过程中才会产生挂载宿主机目录的需求。因此,能够实现在容器的运行过程中挂载宿主机目录成为亟待解决的难题。

技术实现要素:

为解决现有技术中的问题,本发明实施例提供一种挂载宿主机目录到容器环境中的方法及装置。

第一方面,本发明实施例提供一种挂载宿主机目录到容器环境中的方法,包括:获取宿主机上的物理磁盘设备信息;获取正在运行的容器的内部进程在所述宿主机上的进程号,并根据所述进程号进入所述容器对应的容器环境中;基于所述物理磁盘设备信息在所述容器内部创建对应的虚拟磁盘设备信息;在所述容器内部,将所述虚拟磁盘设备信息挂载在临时目录下,实现所述临时目录涵盖宿主机目录信息;将所述临时目录下的所述宿主机目录信息挂载到容器目录,实现挂载宿主机目录到所述容器环境。

进一步地,所述获取宿主机上的物理磁盘设备信息,具体包括:根据所述宿主机目录信息获取所述宿主机的所述虚拟磁盘设备信息,根据所述虚拟磁盘设备信息获取所述物理磁盘设备信息。

进一步地,在所述基于所述物理磁盘设备信息在所述容器内部创建对应的虚拟磁盘设备信息之后,所述在所述容器内部,将所述虚拟磁盘设备信息挂载在临时目录下之前,所述方法还包括:在所述容器内部,创建所述临时目录。

进一步地,在所述将所述临时目录下的所述宿主机目录信息挂载到容器目录,实现挂载宿主机目录到容器环境之后,所述方法还包括:卸除所述容器内部的所述临时目录。

进一步地,所述根据所述进程号进入所述容器对应的容器环境中,具体包括:使用nsenter--targetpid命令根据所述进程号进入所述容器对应的容器环境中;其中,pid表示所述进程号;所述基于所述物理磁盘设备信息在所述容器内部创建对应的虚拟磁盘设备信息,具体包括:使用mknod命令结合所述物理磁盘设备信息,在所述容器内部创建所述虚拟磁盘设备信息;所述在所述容器内部,将所述虚拟磁盘设备信息挂载在临时目录下,具体包括:在所述容器内部使用mount命令将所述虚拟磁盘设备信息挂载在所述临时目录下;所述将所述临时目录下的所述宿主机目录信息挂载到容器目录,具体包括:使用mount-obind命令挂载所述临时目录下的所述宿主机目录信息到所述容器目录。

进一步地,所述卸除所述容器内部的所述临时目录,具体包括:使用umount命令卸除所述容器内部的所述临时目录。

第二方面,本发明实施例提供一种挂载宿主机目录到容器环境中的装置,包括:宿主机物理磁盘设备信息获取模块,用于获取宿主机上的物理磁盘设备信息;容器环境进入模块,用于获取正在运行的容器的内部进程在所述宿主机上的进程号,并根据所述进程号进入所述容器对应的容器环境中;容器内虚拟磁盘设备信息创建模块,用于基于所述物理磁盘设备信息在所述容器内部创建对应的虚拟磁盘设备信息;第一挂载模块,用于在所述容器内部,将所述虚拟磁盘设备信息挂载在临时目录下,实现所述临时目录涵盖宿主机目录信息;第二挂载模块,用于将所述临时目录下的所述宿主机目录信息挂载到容器目录,实现挂载宿主机目录到所述容器环境。

进一步地,所述宿主机物理磁盘设备信息获取模块具体用于:根据所述宿主机目录信息获取所述宿主机的所述虚拟磁盘设备信息,根据所述虚拟磁盘设备信息获取所述物理磁盘设备信息。

第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值