如何在Docker内部挂载Hugepages

5

我有一个在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"]

但是我没有看到Hugepages从挂载命令中被挂载,为什么呢?
请问有人可以指出来吗?这是可能的吗?

你可能需要在 特权模式 下运行您的容器。 - Thomasleveil
1个回答

10

手头有几件事情;

首先,Dockerfile 只有一个CMD命令,你所做的事情是行不通的;如果需要在容器启动时执行多个步骤,考虑使用入口脚本,例如this is the entrypoint script of the official mysql image

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

备选方案

一个更加简洁的解决方案是在主机上挂载hugepages,并允许容器访问该设备,例如;

docker run --device=/dev/hugepages:/dev/hugepages ....

不确定这是否还有效...现在您需要添加自定义设备“/dev/hugepages”:不是设备节点。 - Gabe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接