【问题标题】:How do I disable Transparent Hugepages for Docker for Mac/Windows (Native)如何禁用 Docker for Mac/Windows 的透明大页面(本机)
【发布时间】:2023-03-04 06:01:01
【问题描述】:

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

【问题讨论】:

    标签: docker docker-compose boot2docker


    【解决方案1】:

    您实际上可以使用 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
    

    我最终为此创建了一个映像,并让 redis/mariadb 将它包含在我的 docker-compose.yml 文件中的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
    

    【讨论】:

    • 以特权身份运行容器允许容器访问主机,出于安全原因,这通常不是一个好主意。这里有一篇关于如何在 Docker for Mac 中登录 VM 的帖子,但它似乎有点 hack:forums.docker.com/t/… 我还不知道这样做的官方方式。
    【解决方案2】:

    更简单的解决方案是创建包含内容的文件profile

    echo never > /sys/kernel/mm/transparent_hugepage/enabled 
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
    

    并将以下行添加到 Dockerfile

    COPY profile /var/lib/boot2docker/profile
    

    【讨论】:

    • 你的意思是说这个dockerfile生成的镜像是用作docker_compose的那个depends_on吗?
    猜你喜欢
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 2012-10-09
    • 2017-07-20
    • 1970-01-01
    • 2017-07-24
    • 2013-04-10
    相关资源
    最近更新 更多