如何为 Mac/Windows 的 Docker 禁用透明大页面(本机)

Roo*_*ool 5 docker boot2docker docker-compose

TokuDB 引擎和 Redis 需要禁用透明大页面。使用 docker-toolbox,我可以通过 docker-machine ssh 进入主机并禁用它。我不再有权访问主机操作系统,那么如何禁用它?

Roo*_*ool 3

实际上,您可以使用 Docker For Mac/Windows 中的特权容器来执行此操作。你可以这样做:

docker run -ti --privileged ubuntu /bin/bash
echo never | tee /sys/kernel/mm/transparent_hugepage/enabled
echo never | tee /sys/kernel/mm/transparent_hugepage/defrag
Run Code Online (Sandbox Code Playgroud)

我最终为此创建了一个图像,并让 redis/mariadb 将其包含在我的 docker-compose.yml 文件中的depends_on下

FROM ubuntu:latest
COPY ./docker-entrypoint.sh /
ENTRYPOINT ["/docker-entrypoint.sh"]
Run Code Online (Sandbox Code Playgroud)

其中 docker-entrypoint.sh 有:

#!/bin/bash
set -e

echo never | tee /sys/kernel/mm/transparent_hugepage/enabled
echo never | tee /sys/kernel/mm/transparent_hugepage/defrag
Run Code Online (Sandbox Code Playgroud)