其他(所有?)系统用户有牵连?

大家好。

为什么 Discourse——我没有尝试过其他容器,无论是 Ubuntu 还是 Docker 都不是我的首选——会涉及到其他(所有常规?)用户?

当我启动 Discourse 时,会以一个我不认为与 discourse/容器有任何关系的用户的名义启动多个进程,当然,这是我从用于 Discourse 部署的 sudo 用户。这里:

unicorn_launche─┬─ruby─┬─ruby───23*[{ruby}]
                │      ├─8*[ruby───8*[{ruby}]]
                │      └─7*[{ruby}]
                └─sleep
-\u003e $ ps -Fp 8794
UID          PID    PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
appmgr      8794    8792  0  3829  4320   2 12:17 ?        00:00:00 /bin/bash config/unicorn_launcher -E production -c config/unicorn.conf.rb
-\u003e $ ps -Fp 8792
UID          PID    PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root        8792    8788  0   562   684   4 12:17 ?        00:00:00 runsv unicorn

我看到/得到的是否有效且合法?如果是,那么在哪里可以找到一些提供更多信息的 man pages?作为 Ubuntu/Docker/Discourse 的系统管理员,我仍然是新手。

当您在容器外部查看进程时,它将显示与 Discourse 相关的进程,这些进程以主机上 UID 为 1000 的用户身份运行。

之所以会这样,是因为容器内的进程是以容器的 UID 1000 运行的。:slight_smile:

这只是 Docker 容器工作方式的一个奇怪的特性。:slight_smile:

2 个赞

是的。这是预期的。

Unicorn 负责提供页面。Ruby 是 Discourse 使用的语言。您可以看到 unicorn 启动器启动了所有这些进程。

如果您查看在 Windows 或 Mac 计算机上运行的内容,您也不知道所有这些是什么。:person_shrugging:

我真的不确定您将如何学习。也许是 Rails 文档?对于新的系统管理员来说,还有很多其他更有用的东西。

2 个赞

也许我把它说得有点含糊不清——让我感到困惑的是(某些)进程属于哪个用户。我使用的容器工具使所有容器都无根运行——除非网络要求使其不可能——这些工具可以清晰地映射真实 UID 和子 UID 之间的关系,这样就可以清楚地看到哪个是什么。感谢 @ClawdiaWolf。我希望这些内容能出现在官方文档中(而不仅仅是代码)。

2 个赞

这里也讨论过:

:slight_smile:

4 个赞