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

但是我看不到mout命令挂载Hugepages,为什么?

任何人都可以指出我,可以这样做吗?

最佳答案

有很多东西在手;
首先,一个Dockerfile只有一个命令(CMD)。你在做什么是行不通的;如果在启动容器时需要执行多个步骤,请考虑使用入口点脚本,例如this is the entrypoint script of the official mysql image
其次,在容器中执行mount需要其他特权。您可以使用--privileged,但这可能一步之遥,并且给容器提供了太多特权。您可以尝试使用--cap-add SYS_ADMIN运行容器。
替代解决方案
一种更干净的解决方案可能是在主机上挂载大量页面,并允许容器访问该设备,例如:

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

关于linux - 如何在Docker中挂载Hugepages,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34787506/

10-11 01:03