Обновить 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- \