如何在 Docker 内挂载大页面

How to Mount Hugepages inside Docker

我有一个应用程序 运行ning inside 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 从 mout 命令挂载,为什么?

谁能指点一下,可以吗?

手头有很多事情;

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

其次,在容器中执行mount需要额外的权限。您可以使用 --privileged 但这一步可能太宽了,并且给容器太多的特权。您可以尝试 运行 容器 --cap-add SYS_ADMIN 代替。

备选方案

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

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