Запуск Couchbase под GCE Docker и получение ошибки о максимальном количестве файлов

#couchbase #docker #google-compute-engine

# #couchbase #docker #google-compute-engine

Вопрос:

Когда я запускаю сервер Couchbase в контейнере Docker на GCE, используя образ ncolomer / couchbase, я получаю эту ошибку:

 The maximum number of open files for the couchbase user is set too low.
It must be at least 10240. Normally this can be increased by adding
the following lines to /etc/security/limits.conf:

couchbase              soft    nofile                  <value>
couchbase              hard    nofile                  <value>

Where <value> is greater than 10240.
 

Документы в ncolomer / couchbase рекомендуют обновлять /etc/init/docker.conf и добавлять limit nofile 262144 , но я не уверен, что это доступно даже при использовании Docker в GCE.

Я вижу несколько вариантов:

  • В Dockerfile запустите скрипт для изменения /etc/security/limits.conf , как указано в ошибке couchbase.
  • Вызовите ulimit -n 64000 Dockerfile

Есть предложения?

Ответ №1:

Проблема с ulimit заключается в том, что ограничения ограничены пределами хост-процесса docker. Это связано с известной проблемой # 4717 (и в меньшей степени # 1916) Docker.

Как я понимаю, два упомянутых вами варианта не должны работать, поскольку он установит ограничение только для дочернего процесса (т. Е. Контейнера). Оттуда я не вижу другого выбора, кроме как установить правильный ulimit на хосте, прежде чем пытаться увеличить его в вашем контейнере.

Документированная процедура должна работать нормально, пока у вас не появится возможность ее применить. Я не очень хорошо знаю платформу GCE, но если у вас есть root-доступ к вашему экземпляру, вам следует просто применить изменения к /etc/init/docker.conf файлу, перезапустить службу Docker и запустить контейнер Couchbase.

Комментарии:

1. Мне удалось заставить это работать на GCE, выполнив следующие действия: 1) Отредактируйте /etc/default/docker 2) Добавьте новую строку в файл с помощью: ulimit -n 262144 3) Перезапустите экземпляр GCE в GCE web admin Примечание администратора: сначала я попытался перезапустить только службу docker, а невесь экземпляр, но получил ошибку и не смог понять, почему