执行进程的 Docker 用户无法被删除

执行进程的 Docker 用户无法被删除

我有一些特定用户使用的资源,我必须删除这些资源,因为它从服务器占用了大量资源。当我列出服务器中的进程时,已删除的用户现在显示为“1001”,而不是删除之前显示的名称。

%Cpu(s): 19.8 us, 29.5 sy,  0.0 ni, 50.7 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem :  3882456 total,   183568 free,  2003808 used,  1695080 buff/cache
KiB Swap:  1679356 total,  1155300 free,   524056 used.  1463480 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
9192 1001      20   0 2068436  74700  10284 S   0.3  1.9   3:02.86 node 

通过使用systemctl status我发现用户正在执行的进程和 docker 容器 ID 位于:

       ├─docker
       │ ├─42b40e73687acb7fcd9a0e43372ced7588b5568c942f740d06510ab0e85b1462
       │ │ ├─17156 /bin/sh -e /usr/local/sbin/start.sh
           └─11148 node --debug --nolazy dist-release/server

因此,我进入容器并查看 start.sh 文件,但它只是一个可执行文件,文件内部没有任何迹象表明用户正在可执行文件内部被调用。

CONTAINER ID        IMAGE                                    COMMAND                  CREATED             STATUS              PORTS                                                                                                                   NAMES
    apiassets_1
42b40e73687a        local.io/api-statements:development     "start.sh"               21 hours ago        Up 18 hours         0.0.0.0:32785->3000/tcp, 0.0.0.0:5966->5858/tcp    

我想要做的是阻止该用户使用该资源,所以我只是好奇如何找到该用户如何调用该脚本来停止它,或者如何停止它。

答案1

仅供关注我的问题的任何人使用。发生的事情有点奇怪,但是运行该进程的用户恰好在 docker 容器内具有与主机相同的 ID,因此当我列出所有进程时,容器内用户的用户 ID 正在获取映射到我在主机中拥有的特定用户。这解释了为什么当我删除主机中的用户时,我仍然看到该进程以“1001”运行。

所以,现在我很清楚它应该是这样运作的。

我也看了这个工具叫系统数据库如果有人感兴趣,这似乎可以解决像我遇到的问题,因为它会为您提供有关每个容器的具体信息。就我而言,我看到主机和容器中发生的进程,因此很难真正检查正在发生的情况。

相关内容