Docker Discourse ホスト OS の標準運用手順

多くの素晴らしいハウツー投稿がありますが、以下の内容を含む投稿は見つかりません、あるいは存在しないようです:

  • 自己ホスティングを行う場合、Docker コンテナのみをホストするために、Ubuntu などのホスト OS をどのように設定するか。
  • サイトが稼働している状態で、ホスト OS に対して取るべき標準的な運用手順(SOP)は何か。例えば、ハッキングのチェック方法、ホスト OS からコンテナへの移行方法、問題発生に備えた基本情報の保存方法など。

OS やサイトごとにマニュアルが異なることは理解していますが、共通する事項も数多くあるはずです。

OS は Docker コンテナのみを実行するため、不要なファイルやサービスが存在する可能性があります。では、何が不要なのでしょうか?GUI や必要な仕組み、パッケージ類は本当に必要でしょうか?

サイトが稼働している状態で何かが起こり、サイトがダウンした場合、サイトの構成方法、ゼロから再構築する手順、実行中のソフトウェアのバージョンなどの詳細を把握しておく必要があります。これらの詳細のうち、どれが重要なのでしょうか?私はある程度把握していますが、他の人の意見や経験に基づく知見を確認できれば幸いです。


当サイトの SOP(標準運用手順)作成の例として、ホスト OS と Docker コンテナ内それぞれからのpstreeの結果を示します。ホスト側は本当にこれだけのプロセスを必要とするのでしょうか?今後数日で答えがわかると思いますが、すでに知っている方がいれば共有していただけると幸いです。

    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を参照してください。
注:現時点では試していませんが、情報共有まで。

古くても動作するものは、依然として有効であることが多いです。Sam によるDiscourse in a Docker containerもご覧ください。:grinning:
Discourse を Docker で使用する歴史と仕組みについて、多くの洞察が得られます。

「いいね!」 2