如何为 Mac/Windows(本机)禁用 Docker 的透明大页面
How do I disable Transparent Hugepages for Docker for Mac/Windows (Native)
需要为 TokuDB 引擎和 Redis 禁用透明大页面。使用 docker-toolbox,我可以 docker-machine ssh 进入主机并禁用它。我无法再访问主机 OS,那么如何禁用它?
您实际上可以使用 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
我最终为此创建了一个图像,并在我的 docker-compose.yml 文件 redis/mariadb 中将其包含在 depends_on 下
FROM ubuntu:latest
COPY ./docker-entrypoint.sh /
ENTRYPOINT ["/docker-entrypoint.sh"]
其中 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
一个更简单的解决方案是创建文件 profile with content
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
并将以下行添加到 Dockerfile
COPY profile /var/lib/boot2docker/profile
需要为 TokuDB 引擎和 Redis 禁用透明大页面。使用 docker-toolbox,我可以 docker-machine ssh 进入主机并禁用它。我无法再访问主机 OS,那么如何禁用它?
您实际上可以使用 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
我最终为此创建了一个图像,并在我的 docker-compose.yml 文件 redis/mariadb 中将其包含在 depends_on 下
FROM ubuntu:latest
COPY ./docker-entrypoint.sh /
ENTRYPOINT ["/docker-entrypoint.sh"]
其中 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
一个更简单的解决方案是创建文件 profile with content
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
并将以下行添加到 Dockerfile
COPY profile /var/lib/boot2docker/profile