如何在 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 ....
我有一个应用程序 运行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 ....