如何使用 docker 创建应用程序并仍然在主机上运行 psutil?

问题描述

抱歉,我对 Python 还是很陌生。我正在通过 Docker 创建一个应用程序,它监视计算机上运行的某个应用程序的 cpu 使用情况,它使用 psutil。但是,当我运行应用程序时它不起作用,因为它使用 Docker 容器系统等。我想知道这是否可能?这是我的 Dockerfile,我正在使用 Mac。我已经阅读了关于安装的内容,但我真的不明白如何去做。

FROM python:3.9

RUN apt-get update -y && \
    apt-get install -y python3-pip python3-dev

copY requirements.txt .

workdir /


RUN pip3 install -r requirements.txt


copY . /


CMD ["python","app/dbfile.py" ]

解决方法

您需要直接在主机系统上运行此工具,也许在 Python 虚拟环境中。你不能在 Docker 中运行它,尤其是不能在 MacOS 上运行。

Docker 容器通常旨在与其主机系统隔离。在容器中运行的进程无法看到其自身容器外的进程,因此主机进程监控工具无法看到它需要监控的主机进程。在 MacOS 上,这是双重正确的,因为容器在隐藏的 (Linux) 虚拟机中运行;即使您可以禁用 Docker pid 命名空间,您仍然无法看到 VM 外部以监控 (MacOS) 主机进程。