如何在 Docker 中挂载 Hugepages

Ami*_*mar 5 linux virtualization linux-kernel docker

我有一个在 Docker 中运行的应用程序需要运行 Huge-page。现在我尝试了以下相同的命令集。

CMD ["mkdir", "-p" ,"/dev/hugepages"]
CMD ["mount" ,"-t", "hugetlbfs" , "none", "/dev/hugepages"]
CMD ["echo 512" ,">" ,"/proc/sys/vm/nr_hugepages"]
CMD ["mount"]
Run Code Online (Sandbox Code Playgroud)

但是我没有看到从 mout 命令安装了 Hugepages,为什么?

任何人都可以指出我,是否有可能做到?

tha*_*tah 9

手头有很多事情;

首先,一个Dockerfile仅具有单个命令(CMD); 你在做什么是行不通的;如果需要在容器启动时做多个步骤,可以考虑使用入口脚本,例如这是mysql官方镜像的入口脚本

其次,mount在容器中进行操作需要额外的权限。您可以使用,--privileged但这可能太宽泛了,并且为容器提供了太多权限。您可以尝试改为运行容器--cap-add SYS_ADMIN

替代方案

一个更简洁的解决方案可能是在主机上安装大页面,并让容器访问该设备,例如;

docker run --device=/dev/hugepages:/dev/hugepages ....
Run Code Online (Sandbox Code Playgroud)