Обновить max_map_count для контейнера док-станции ElasticSearch Mac-хост

Я использую этот контейнер для запуска elasticsearch в docker. В соответствии с инструкцией мне нужно обновить max_map_count, чтобы запустить контейнер

sudo sysctl -w vm.max_map_count = 262144

но.. Я могу обновить его в своем хосте (контейнере) ПОСЛЕ того, как я его запустил, пока я не могу его запустить. Я что-то делаю неправильно?

ОШИБКА: проверка начальной загрузки не удалась. Максимальные области виртуальной памяти vm.max_map_count [65530], вероятно, слишком низкий, увеличьте, по крайней мере, до [262144]

Если я попытаюсь сделать это на своей главной машине (это Mac), я получаю следующую ошибку.

sysctl: unknown oid 'vm.max_map_count'

Docker engine устанавливает Lunix VM, где работают все контейнеры. Поэтому команда для увеличения лимита должна выполняться для хоста Linux, а не для Mac.

Как я могу получить доступ к Linux VM через терминал, установленный движком Docker?

Ответ 1

В панели инструментов Docker

Если вы находитесь в панели инструментов докеров, попробуйте клиент-докер с терминала, а затем создайте конфиги:

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

В Docker для Mac:

Параметр vm_max_map_count должен быть установлен в виртуальной машине xhyve:

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

Если он запрашивает у вас имя пользователя и пароль, введите root и пароль.

Если у него просто пустой экран, нажмите RETURN.

Затем настройте параметр sysctl, как и для Linux:

sysctl -w vm.max_map_count=262144

Выход из Control-A Control - \.

Se docs здесь.

Постоянство

В некоторых случаях это изменение не сохраняется за перезагрузкой виртуальной машины. Итак, пока screen 'd в, отредактируйте файл /etc/sysctl.d/00-alpine.conf и добавьте параметр vm.max_map_count=262144 в конец файла.

Ответ 2

В последней версии Docker для Mac (версия 18.06.0-ce-mac70):

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

На пустом экране нажмите RETURN.

Затем настройте параметр sysctl так же, как для Linux:

sysctl -w vm.max_map_count=262144

Выход Control- A Control- \