Существует множество руководств по решению конкретных задач, которые очень полезны, но я не могу найти (или они вообще не существуют) те, которые включают:
- Для тех, кто размещает сайт самостоятельно: как настроить операционную систему хоста (например, 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-контейнере от Сэма. ![]()
Это даёт много информации об истории использования Discourse в Docker и о том, как это работает.