【问题标题】:Update max_map_count for ElasticSearch docker container Mac host更新 ElasticSearch docker 容器 Mac 主机的 max_map_count
【发布时间】:2017-05-02 17:44:36
【问题描述】:

我正在使用this 容器在docker 中启动elasticsearch。按照manual我要更新max_map_count来启动容器

sudo sysctl -w vm.max_map_count=262144

但是.. 我可以在启动它之后在我的主机(容器)中更新它,但我无法启动它。我做错了吗?

错误:引导程序检查最大虚拟内存区域失败 vm.max_map_count [65530] 可能太低,至少增加到 [262144]

如果我尝试在我的主机(即 Mac)上执行此操作,我会收到以下错误。

sysctl: 未知 oid 'vm.max_map_count'

Docker 引擎安装运行所有容器的 Lunix VM。所以增加限制的命令应该针对Linux主机执行,而不是针对Mac。

如何通过 Docker 引擎安装的终端访问 Linux VM?

【问题讨论】:

  • 你增加了作为 root 用户的 vm max map 计数吗?
  • 是的,更新了命令。但是是为主机(Mac OS)执行的,而不是为容器操作系统(Linux)执行的,似乎需要为来宾操作系统(设置了 ES 的容器操作系统)执行。

标签: elasticsearch docker containers docker-container


【解决方案1】:

在 Docker 工具箱上

如果您在 docker 工具箱中,请从终端尝试 docker 客户端,然后进行配置:

docker-machine ssh
sudo sysctl -w vm.max_map_count=262144
exit

在 Mac 的 Docker 上:

vm_max_map_count 设置必须在 xhyve 虚拟机中设置:

$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

如果它要求您输入用户名和密码,请使用 root 用户和无密码登录。

如果它只是一个空白屏幕,请按 RETURN。

然后像在 Linux 上一样配置 sysctl 设置:

sysctl -w vm.max_map_count=262144

按 Control-A Control-\退出。

查看文档here

持久性

在某些情况下,此更改不会在 VM 重新启动后持续存在。因此,当 screen'd 进入时,编辑文件 /etc/sysctl.d/00-alpine.conf 并将参数 vm.max_map_count=262144 添加到文件末尾。

【讨论】:

  • 只是为了完成:请注意,此更改在主机操作系统上,而不是在容器内。容器与主机操作系统共享相同的内核,因此它正在工作。在 OSX 上,“docker host OS”是一个由 docker-machine cli 包装的 VM。
  • @Octavio 问题:我似乎无法编辑该文件,File is read-only 不断出错。我认为 xhyve 是一个只读文件系统,但我的 Docker/xhyve-fu 还不够强大。您是如何编辑该文件的?
  • 当我点击screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty 时,我不会去这样的文件或目录。
  • @Ragnar 运行 find ~/Library/Containers/com.docker.docker/Data/ -name 'tty'。我的地址是 ~/Library/Containers/com.docker.docker/Data/vms/0/tty High Sierra 10.13.6
  • 现在您可以从 docker 桌面 GUI 更改虚拟内存。首选项 -> 资源 -> 交换 -> 应用并重新启动。
【解决方案2】:

在最新的 Docker For Mac(版本 18.06.0-ce-mac70)上:

$ screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty

在空白屏幕上,按 RETURN。

然后像在 Linux 上一样配置 sysctl 设置:

sysctl -w vm.max_map_count=262144

按 Control-A 退出 Control-\

【讨论】:

  • 如何在重启后保持这种状态?
  • 我不能screen。我得到Cannot exec '/Users/arielpontes/Library/Containers/com.docker.docker/Data/vms/0/tty': Permission deniedsudo 也不起作用。该文件存在,但显然无论如何都无法执行。
  • @Ariel 你能解决这个问题吗,因为我现在面临同样的挑战
  • @iChux 在 Docker Desktop 中,转到 Preferences,之后,Resources 并更改 Swap 值
【解决方案3】:

对于在 Windows 10 上使用 Docker Desktop 的用户,您必须执行:

wsl -d docker-desktopsysctl -w vm.max_map_count=262144之前的命令行中

【讨论】:

    【解决方案4】:

    对于在mac上使用docker desktop的朋友,可以通过以下步骤轻松增加内存:

    1. 点击 docker 桌面 -> 首选项...
    2. 导航到“资源”
    3. 将内存更改为您需要的任何内容
    4. 点击“应用并重新启动”

    【讨论】:

      【解决方案5】:

      文件夹已被移动,这是新位置 -

      $screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty

      然后

      sysctl -w vm.max_map_count=262144

      【讨论】:

        【解决方案6】:

        如果您从docker's Mac installer 安装了 Docker,那么您将安装 Docker 桌面(还包括 Docker Engine、Docker CLI 客户端、Docker Compose、Notary、Kubernetes 和 Credential Helper。)

        这是 2021 年 Docker 桌面的样子,您可以在其中更改内存/交换或任何其他资源。

        第 1 步 - 点击 docker 的首选项,如下所示。

        第 2 步 - 点击资源选项卡,在这里您可以调整资源,最后点击“应用并重新启动”按钮。

        请忽略我所做的配置。您可以根据自己的需要进行设置。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-05-21
          • 1970-01-01
          • 2020-01-06
          • 1970-01-01
          • 2017-01-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多