如何在Docker中挂载Hugepages

我有一个在Docker里面运行的应用程序需要运行巨大的页面。现在我试着按照下面的命令设置。

CMD ["mkdir", "-p" ,"/dev/hugepages"] CMD ["mount" ,"-t", "hugetlbfs" , "none", "/dev/hugepages"] CMD ["echo 512" ,">" ,"/proc/sys/vm/nr_hugepages"] CMD ["mount"] 

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

任何人都可以请指出,是否有可能做到这一点?

手头有很多东西,

首先,一个Dockerfile只有一个命令( CMD ); 你在做什么都行不通。 如果在启动容器时需要执行多个步骤,请考虑使用入口点脚本,例如, 这是官方mysql映像的入口点脚本

其次,在一个容器中mount需要额外的权限。 你可以使用--privileged但是这可能是太宽的一个步骤,并给予容器太多的权限。 你可以试着用--cap-add SYS_ADMIN来运行容器。

替代方案

一个更清洁的解决方案可能是在主机上挂载巨大页面,并允许容器访问该设备,

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