Docker Discourse 호스트 OS 표준 운영 절차

훌륭한 How to 게시물이 많이 있지만, 다음 내용을 포함하는 특정 게시물을 찾지 못하거나 존재하지 않는 것 같습니다:

  • 자체 호스팅(self-hosting)을 하는 경우, Docker 컨테이너만 호스팅하도록 호스트 OS(예: Ubuntu)를 구성하는 방법.
  • 사이트가 실행된 후, 호스트 OS에 대해 취해야 할 표준 운영 절차(SOP)가 무엇인지. 예: 해킹 여부 확인, 호스트 OS에서 컨테이너로 진입하는 방법, 문제 발생 시 대비하여 기본 정보를 저장하는 방법 등.

각각의 다른 OS와 사이트에 따라 매뉴얼이 달라질 수 있다는 점은 잘 알고 있습니다. 하지만 공통적인 사항도 많습니다.

OS가 Docker 컨테이너만 실행하게 되므로 불필요한 파일과 서비스가 존재하게 되는데, 무엇이 불필요한 것일까요? GUI와 필요한 모든 메커니즘 및 패키지가 필요한가요?

사이트가 실행된 후 문제가 발생하여 사이트가 다운되면, 사이트가 어떻게 구성되었는지, 처음부터 다시 구축하는 단계, 실행 중인 소프트웨어의 버전 등 사이트의 상세 정보가 필요합니다. 이러한 세부 사항 중 어떤 것이 중요한가요? 저는 좋은 아이디어가 있지만, 다른 사람들의 경험과 생각을 들어보면 좋겠습니다.


예를 들어, 저희 사이트의 SOP(표준 운영 절차)를 작성하면서 pstree의 다른 결과를 보여드립니다. 하나는 호스트 OS에서, 다른 하나는 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
참고: 현재 이를 시도해 보지는 않았지만, 정보를 공유하는 것입니다.

오래된 것이지만 작동하는 것은 일반적으로 여전히 유효합니다. Sam의 Docker 컨테이너에서 Discourse를 참조하세요. :grinning:
Docker에서 Discourse를 사용하는 역사와 작동 방식에 대한 많은 통찰력을 제공합니다.

2개의 좋아요