Python 如何正确报告docker容器中的可用RAM?

Python 如何正确报告docker容器中的可用RAM?,python,python-2.7,docker,Python,Python 2.7,Docker,我做了以下测试,发现我无法使用psutil检索有意义的数据 基本上,我试图运行这个命令来使用python报告容器中的可用内存 我已经运行了三次测试,每次都使用不同的内存参数: 以下是测试: docker run -m 10000000 -ti python:2.7 bash docker run -m 100000000 -ti python:2.7 bash docker run -m 800000000 -ti python:2.7 bash 这就是结果 >

我做了以下测试,发现我无法使用
psutil
检索有意义的数据

基本上,我试图运行这个命令来使用python报告容器中的可用内存

我已经运行了三次测试,每次都使用不同的内存参数:

以下是测试:

docker run -m 10000000  -ti python:2.7  bash  
docker run -m 100000000  -ti python:2.7  bash  
docker run -m 800000000  -ti python:2.7  bash   
这就是结果

> docker run -m 10000000  -ti python:2.7  bash                                                                                                     
root@310de7b416cc:/# pip install psutil && python -c "import psutil; print psutil.virtual_memory().available"
Killed

> docker run -m 100000000  -ti python:2.7  bash                                                                                                    
root@e7aade23c143:/# pip install psutil && python -c "import psutil; print psutil.virtual_memory().available"
Collecting psutil
  Downloading psutil-5.3.1.tar.gz (397kB)
    100% |████████████████████████████████| 399kB 2.8MB/s 
Building wheels for collected packages: psutil
  Running setup.py bdist_wheel for psutil ... done
  Stored in directory: /root/.cache/pip/wheels/bc/00/68/b4cbf1017e55880ef2afd1a248a1c88311f38a574c8929d687
Successfully built psutil
Installing collected packages: psutil
Successfully installed psutil-5.3.1
1741164544

> docker run -m 800000000  -ti python:2.7  bash                                                                                                   
root@b8a28ad93432:/# pip install psutil && python -c "import psutil; print psutil.virtual_memory().available"
Collecting psutil
  Downloading psutil-5.3.1.tar.gz (397kB)
    100% |████████████████████████████████| 399kB 2.8MB/s 
Building wheels for collected packages: psutil
  Running setup.py bdist_wheel for psutil ... done
  Stored in directory: /root/.cache/pip/wheels/bc/00/68/b4cbf1017e55880ef2afd1a248a1c88311f38a574c8929d687
Successfully built psutil
Installing collected packages: psutil
Successfully installed psutil-5.3.1
1739603968
在第一次测试中,工作会立即终止。这是因为RAM分配较低

但在第二次和第三次测试中,即使
-m
参数相差8倍,python代码返回的结果也大致相同:1741164544和1739603968(即1741164544和1739603968)

为什么会这样

我的主机是一台mac电脑,它有16G内存

Docker使用CGroup来控制容器对资源的使用,因此您应该检查CGroup文件:

$ docker run -m 800000000  -ti centos  bash   
[root@c7406a25bc4b /]# cat /sys/fs/cgroup/memory/memory.limit_in_bytes
799997952
psutil
很可能使用
/proc/meminfo
文件来显示系统的功能,而不是容器的功能


另请参见:

谢谢您的回答。你知道有哪个python库可以提取这些信息吗?