How to start discourse inside a linux container?

Я пытался запустить Discourse внутри LXD на Ubuntu Server на Raspberry Pi 4 с USB SSD, но процесс просто зависал и завершался по тайм-ауту во время пересборки. Зависания случались раньше и были более выраженными при использовании пула хранилища btrfs на основе loopback-устройства, а позже — при использовании пула zfs на основе loopback. Потребление памяти оставалось стабильным около 1 ГБ с пиками до 3 ГБ. При зависании SSH и утилита top оставались отзывчивыми, но вся активность использования системы падала до ничтожного уровня, что указывало на то, что процесс перестал отвечать.

В настоящее время документация LXD рекомендует просто установить параметр security.nesting в строковое значение true для включения поддержки Docker, что я и сделал. Однако в документации LXD также есть страница с рекомендациями по конфигурации для production, где перечислено около 20 настроек, которые необходимо изменить, но я их не пробовал.

В итоге я отказался от попытки запустить Discourse в LXD и просто запустил его через Docker на той же машине.

Детали моих попыток здесь:

Странно, что нижеприведённое руководство по запуску Docker в LXD рекомендует использовать btrfs, несмотря на то, что документация LXD не рекомендует его. Кроме того, в нём, по-видимому, не используется отдельный раздел для btrfs (хотя там устанавливаются дополнительные настройки, устанавливаются другие пакеты вместо docker.io, и том btrfs подключается только к Docker). Поэтому я задаюсь вопросом, почему у меня возникли такие проблемы:

@vmsman, не могли бы вы поделиться более подробной информацией о вашей настройке LXD, например, о профилях, пулах хранилища и любых системных настройках, которые потребовали изменения, так как, судя по всему, у вас самая успешная конфигурация на данный момент:

Что касается LXD, у меня возникают следующие вопросы:

  • Помогут ли разделы вместо loopback-файлов для пулов хранилища решить проблемы с производительностью и устранить зависания?
  • Поможет ли использование MicroCloud или кластера LXD, либо использование Ceph в качестве пула хранилища?

В целом, несмотря на то, что мне не удалось запустить Discourse в LXD, я очень впечатлён LXD и его простотой использования. Ранее я месяцами боролся с HashiCorp, поскольку HashiCorp, похоже, интересует только корпоративное использование. В то время как LXD просто работает, а сообщество достаточно поддерживающее, что позволяет небольшим командам и независимым разработчикам добиваться прогресса.