Стандартные операционные процедуры хост-ОС для Docker Discourse

Существует множество руководств по решению конкретных задач, которые очень полезны, но я не могу найти (или они вообще не существуют) те, которые включают:

  • Для тех, кто размещает сайт самостоятельно: как настроить операционную систему хоста (например, Ubuntu) исключительно для запуска Docker-контейнера.
  • После запуска сайта: какие стандартные процедуры эксплуатации следует применять на уровне ОС хоста, например, проверка на взлом, переход от ОС хоста к контейнеру, хранение базовой информации для подготовки к возможным проблемам и т.д.

Я понимаю, что для каждой ОС и сайта инструкция будет отличаться, но есть много общих моментов.

Поскольку ОС будет запускать только Docker-контейнер, в ней могут присутствовать лишние файлы и службы, но что именно считается лишним? Нужен ли графический интерфейс и все сопутствующие утилиты и пакеты?

После запуска сайта, если что-то пойдет не так и сайт перестанет работать, необходимо иметь подробную информацию о его конфигурации, шаги для полной пересборки, версию используемого программного обеспечения и т.д. Какие из этих деталей действительно важны? У меня есть своё представление, но было бы полезно узнать мнение и опыт других.


В качестве примера создания стандартных процедур эксплуатации (SOP) для нашего сайта привожу результаты выполнения команды pstree: один вывод из ОС хоста, другой — изнутри Docker-контейнера. Действительно ли хосту нужны все эти процессы? В ближайшие дни я, вероятно, найду ответ, но возможно, кто-то уже знает и может поделиться информацией.

    systemd─┬─ModemManager───2*[{ModemManager}]
            ├─NetworkManager─┬─dhclient
            │                └─2*[{NetworkManager}]
            ├─accounts-daemon───2*[{accounts-daemon}]
            ├─2*[agetty]
            ├─atd
            ├─containerd─┬─containerd-shim─┬─boot───runsvdir─┬─runsv───rsyslogd───2*[{rsyslogd}]
            │            │                 │                 ├─runsv───cron
            │            │                 │                 ├─runsv───unicorn_launche─┬─ruby─┬─ruby───22*[{ruby}]
            │            │                 │                 │                         │      ├─6*[ruby───8*[{ruby}]]
            │            │                 │                 │                         │      ├─2*[ruby───9*[{ruby}]]
            │            │                 │                 │                         │      └─5*[{ruby}]
            │            │                 │                 │                         └─sleep
            │            │                 │                 ├─runsv─┬─redis-server───3*[{redis-server}]
            │            │                 │                 │       └─svlogd
            │            │                 │                 ├─runsv─┬─postmaster───9*[postmaster]
            │            │                 │                 │       └─svlogd
            │            │                 │                 └─runsv───nginx───5*[nginx]
            │            │                 └─10*[{containerd-shim}]
            │            └─18*[{containerd}]
            ├─cron
            ├─dbus-daemon
            ├─dockerd─┬─docker-proxy───8*[{docker-proxy}]
            │         ├─docker-proxy───7*[{docker-proxy}]
            │         └─16*[{dockerd}]
            ├─irqbalance───{irqbalance}
            ├─lvmetad
            ├─lxcfs───4*[{lxcfs}]
            ├─networkd-dispat───{networkd-dispat}
            ├─polkitd───2*[{polkitd}]
            ├─rsyslogd───3*[{rsyslogd}]
            ├─sshd───sshd───sshd───bash───pstree
            ├─sudo───docker───11*[{docker}]
            ├─systemd───(sd-pam)
            ├─systemd-journal
            ├─systemd-logind
            ├─systemd-resolve
            ├─systemd-timesyn───{systemd-timesyn}
            ├─systemd-udevd
            └─wpa_supplicant
boot───runsvdir─┬─runsv───rsyslogd───2*[{rsyslogd}]
                ├─runsv───cron
                ├─runsv───unicorn_launche─┬─ruby─┬─ruby───22*[{ruby}]
                │                         │      ├─6*[ruby───8*[{ruby}]]
                │                         │      ├─2*[ruby───9*[{ruby}]]
                │                         │      └─5*[{ruby}]
                │                         └─sleep
                ├─runsv─┬─redis-server───3*[{redis-server}]
                │       └─svlogd
                ├─runsv─┬─postmaster───9*[postmaster]
                │       └─svlogd
                └─runsv───nginx───5*[nginx]

РЕДАКТИРОВАНИЕ

Для минимальной конфигурации Ubuntu см.: Minimal Ubuntu
Примечание: Я пока не пробовал это, но просто делюсь информацией.

То, что проверено временем и работает, обычно остаётся актуальным. См.: Discourse в Docker-контейнере от Сэма. :grinning:
Это даёт много информации об истории использования Discourse в Docker и о том, как это работает.

2 лайка