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