Недавно я арендовал VPS как частную площадку и для обучения докеру. Я хочу разместить несколько веб-сервисов за nginx-proxy вместе с docker-letsencrypt-nginx-proxy-companion .
На сервере работает Ubuntu 18.04.4 LTS, Docker версия 19.03.6 , сборка 369ce74a3c, docker-compose версия 1.17.1 , сборка неизвестна.
4 ГБ vRAM, 4vCores (оборудование работает на Intel Xeon)
Как только я хочу запустить более 8 контейнеров, я получаю strage ошибки. Есть несколько разных ошибок, и я не могу особенно сказать, когда какая из них появляется:
Ошибка создания среды выполнения OCI
например, при попытке запустить joomla как проект compose с mysql: ERROR: for joomla_joomladb_1 Cannot start service joomladb: OCI runtime create failed:
unable to retrieve OCI runtime error (open /run/containerd/io.containerd.runtime.v1.linux/moby/741c[...]6e3/log.json:
no such file or directory): fork/exec /usr/sbin/runc: resource temporarily unavailable: unknown
сброс сокета
ERROR: for joomla_joomladb_1 Cannot start service joomladb: read unix @->@/containerd-shim/24f42b8[...]32fa1.sock:
read: connection reset by peer: unknown
pthread_create не удалось: ресурс временно недоступен
У меня сейчас нет соответствующих журналов. Я отправлю их сюда, если ошибка возникнет еще раз. Но одна строка всегда выглядит как родительский идентификатор не найден. Когда появляется эта ошибка, я больше ничего не могу делать. См. Следующий пункт:
Кроме того, в связи с этим иногда я получаю некоторые странные ошибки в моей оболочке при вводе любой команды.
Когда сервер находится на этой стадии, я не могу выполнить root-доступ или перезагрузиться с помощью командной строки. Вы можете видеть, как я пытаюсь ввести sudo
на этой картинке: Ошибки при выполнении любой команды. Даже выключение или перезагрузка
бесконечность
, но все это, похоже, не помогает. (Однажды я изменил его в /etc/systemd/system.conf
, а также в systemctl edit docker.service
). $ systemctl show --property=DefaultTasksMax
DefaultTasksMax=4659
$ systemctl status docker
...
Tasks: 52
...
Я установил точно такую же систему на свой локальный ноутбук (кроме программного обеспечения для виртуализации - VPS работает на ПК Р-Виртуализация, локально я использовал Quemu с virtmanager) - и все работает, как ожидалось!
Проблемы возникают с любым контейнером, который я пытаюсь запустить. hello-world
, другой проект compose или уже построенный проект ...
Я связался со своим хостинг-провайдером, также упомянутый выше вопрос, и сказал, что они не будут ограничивать любое использование.
Теперь обнаружил проблему: Хостинг-провайдер ограничивает количество задач виртуальных машин. Этот метод называется счетчиками пользовательских компонентов.
Существует файл, в котором вы можете проверить эти ограничения, установленные Virtuozzo в /proc/user_beancounters
Итак, когда вы знаете, что ваш VPS размещен на Virtuozzo, вы можете cat
этот файл или использование скриптов из здесь для чтения ограничений этого ресурса.
Файл в основном описывает 3 поля:
(скопировано из здесь)
Если отображаемое значение в каком-либо поле безумно велико, это означает, что эти ресурсы не 't вынужден до предела.
Ключевой строкой в моем случае была numprocs
. Он сообщает максимальное количество задач, которые может выполнять машина. А так как процессы в докер-контейнере также работают на том же ядре, что и VPS, все учитывается.
Так что единственным выходом здесь было перейти к другому хостеру, который не использует Virtuozzo (вроде этого)!