一种限制Docker容器inode数量的方法技术

技术编号:37771830 阅读:25 留言:0更新日期:2023-06-06 13:37
本发明专利技术公开了一种限制Docker容器inode数量的方法,包括如下步骤:在docker官方github下载docker源码;找到setProjectQuota函数并替换成setProjectQuota函数;编译docker二进制并安装,运行环境为Linux XFS文件系统和Docker Overlay2存储驱动;使用docker run命令行创建容器,在

【技术实现步骤摘要】
一种限制Docker容器inode数量的方法


[0001]本专利技术涉及计算机安全技术
,具体来说,涉及一种限制Docker容器inode数量的方法。

技术介绍

[0002]相比于虚拟机,Docker利用Linux内核所提供的技术,创建一个或多个共享宿主机物理资源的相对独立的容器。虚拟机实现资源隔离的方式是利用独立的Guest OS,以及利用Hypervisor虚拟化CPU、内存、IO等设备来实现的;Docker则依靠Linux内核所提供的Namespace和Cgroups技术,前者做资源隔离,后者做资源限制。由于Docker没有实现硬件资源的虚拟化,所以只能直接使用物理机的硬件资源。
[0003]目前Docker可以通过Linux系统中的ulimit工具限制容器内shell进程及其子进程能够打开的最大文件描述符数量。docker run命令提供了
‑‑
ulimit选项,用户在通过命令行创建容器时可以直接通过
‑‑
ulimit选项配置容器内shell进程及其子进程能够打开的最大文件描述符数量。另一种方式,用户可以在docker daemon配置文件中配置default

ulimits,设置默认的nofile值。
[0004]对于ulimit,一方面它只能限制容器内shell进程及其子进程能够打开的最大文件描述符数量,如果容器内进程是shell脚本之外的二进制程序,这个限制就无效;另一方面它只能限制单个shell进程及其子进程能够打开的最大文件描述符数量,如果有多个shell进程,这个数量会叠加,会有风险消耗掉物理机所有的inode资源。通过第二种方式,在使用命令行创建容器时,可以不使用
‑‑
ulimit标签即可配置默认的最大文件描述符数量。
[0005]因此,如何对“容器占有的inode资源加以限制,避免当容器消耗掉物理机所有的inode资源时导致整个物理机不可用”成为了人们急需解决的技术难题。

技术实现思路

[0006]针对相关技术中的上述技术问题,本专利技术提出一种限制Docker容器inode数量的方法,能够克服现有技术的上述不足。
[0007]为实现上述技术目的,本专利技术的技术方案是这样实现的:一种限制Docker容器inode数量的方法,包括如下步骤:S1在docker官方github下载docker源码;S2找到setProjectQuota函数并替换成setProjectQuota函数;S3编译docker二进制并安装,运行环境为Linux XFS文件系统和Docker Overlay2存储驱动;S4使用docker run命令行创建容器,在
‑‑
storage

opt选项中指定inode数量;S5在创建容器的过程中,docker守护进程docker

deamon创建容器读写层文件系统,并校验inode配置参数是否合法,如果不合法会终止容器的创建;
S6 inode配置参数校验通过后,docker

deamon调用Linux系统函数quotactl来配置当前容器读写层文件系统的inode数量;S7容器创建完成,容器读写层磁盘空间的inode配额设置完成。
[0008]进一步地,步骤S3中编译docker二进制并安装的运行环境为Linux XFS文件系统。
[0009]进一步地,步骤S3中编译docker二进制并安装的存储驱动为Docker Overlay2。
[0010]本专利技术的有益效果:本专利技术通过调用系统函数quotactl()对文件系统进行inode的最大数量配置,避免Docker容器无节制消耗宿主机系统的inode而导致宿主机不可用问题的出现,实用性非常强。
附图说明
[0011]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0012]图1是根据本专利技术实施例所述的限制Docker容器inode数量的方法的配置流程图。
具体实施方式
[0013]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本专利技术保护的范围。
[0014]如图1所示,根据本专利技术实施例所述的一种限制Docker容器inode数量的方法,其中缩略语和关键术语定义如下:inode
ꢀꢀꢀꢀꢀ
index node(索引节点);ulimit
ꢀꢀꢀꢀꢀ
user limit(用户进程资源限制);Docker
ꢀꢀꢀꢀ
提供OS级虚拟化的一组PaaS产品;XFS
ꢀꢀꢀꢀꢀꢀꢀ
高性能的64位日志文件系统;Overlay2
ꢀꢀꢀ
Docker中一种文件存储驱动程序;文件描述符 Linux系统中,进程级别的对已打开文件的一个抽象标记。
[0015]具体方法包括如下步骤:1、在docker官方github下载docker源码;2、找到setProjectQuota函数并替换成本专利技术实现的setProjectQuota函数;3、编译docker二进制并安装,确保使用的是Linux XFS文件系统[3]和Docker Overlay2存储驱动[4];4、使用docker run命令行创建容器,在
‑‑
storage

opt选项中指定inode数量,示例:docker run
ꢀ‑
tid
ꢀ‑‑
storage

opt inode=1024 nginx;5、在创建容器的过程中,docker守护进程docker

deamon会创建容器读写层文件系统,并校验inode配置参数是否合法,如果不合法会终止容器的创建;6、inode配置参数校验通过后,docker

deamon会调用Linux系统函数quotactl来
配置当前容器读写层文件系统的inode数量;7、容器创建完成,容器读写层磁盘空间的inode配额设置完成。
[0016]本专利技术中,我们首次提出了对容器所拥有的inode数量进行限制的方案,利用了Linux XFS文件系统[3]和Docker Overlay2存储驱动[4]。
[0017]在计算机环境中,磁盘空间不会是无限的,XFS文件系统提供了控制磁盘空间使用的机制,使用其quota子系统可以配置磁盘配额,包括存储块大小和inode数量,我们主要使用了它能够配置磁盘inode配额的能力。Overlay2本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种限制Docker容器inode数量的方法,其特征在于,包括如下步骤:S1在docker官方github下载docker源码;S2找到setProjectQuota函数并替换成setProjectQuota函数;S3编译docker二进制并安装,运行环境为Linux XFS文件系统和Docker Overlay2存储驱动;S4使用docker run命令行创建容器,在
‑‑
storage

opt选项中指定inode数量;S5在创建容器的过程中,docker守护进程docker

deamon创建容器读写层文件系统,并校验ino...

【专利技术属性】
技术研发人员:林萍萍章云鹏刘凯敏
申请(专利权)人:山东未来网络研究院紫金山实验室工业互联网创新应用基地
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1