多くの素晴らしいハウツー投稿がありますが、以下の内容を含む投稿は見つかりません、あるいは存在しないようです:
- 自己ホスティングを行う場合、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もご覧ください。![]()
Discourse を Docker で使用する歴史と仕組みについて、多くの洞察が得られます。