プロセスを実行している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が特定のプロセスにマップされます。 1つはホストユーザーにあります。これは、ホストからユーザーを削除しても「1001」として実行されているプロセスが表示される理由を示しています。

今、私はそれがどのように機能するかを正確に知っていました。

私もこのツールを見ました。システムデータベース誰もが興味があれば、これは各コンテナに関する具体的な情報を提供するので、私が経験しているような問題を解決するようです。私の場合、ホストとコンテナの両方でプロセスが進行しているため、実際に何が起こっているのかを確認するのは困難です。

関連情報