提高Docker(Linux)中的内存使用率

提高Docker(Linux)中的内存使用率,docker,memory-management,heap-memory,ram,moviepy,Docker,Memory Management,Heap Memory,Ram,Moviepy,我目前正在Linux上运行docker映像,由于moviepy,我应该在Linux上一起编写视频。因为我要处理大量的视频,这个过程很快就会变得非常沉重。当运行docker-inspect时,退出代码为137,但是OOM-flag=false时,它不再工作了 然而,我再次在一个容器中运行我的图像,该容器在后台运行docker stats,我看到使用的内存逐渐增加,接近极限内存(15GB),然后它崩溃了。在运行Docker info时,我实际上在Total memory参数中看到了Docker内存中

我目前正在Linux上运行docker映像,由于moviepy,我应该在Linux上一起编写视频。因为我要处理大量的视频,这个过程很快就会变得非常沉重。当运行
docker-inspect
时,退出代码为137,但是
OOM-flag=false
时,它不再工作了

然而,我再次在一个容器中运行我的图像,该容器在后台运行
docker stats
,我看到使用的内存逐渐增加,接近极限内存(15GB),然后它崩溃了。在运行
Docker info
时,我实际上在
Total memory
参数中看到了Docker内存中的这个阈值。所以我想知道两件事:

  • 分配的内存是相当于我的计算机的ram的一部分,还是来自堆内存(计算机的磁盘大小)?因为我肯定这台计算机上有足够的硬件来提供,但由于它有大约16Gb的RAM,我想它是RAM。我只是想知道为什么它不能使用堆内存来存储东西。。。因为docker创建的VM
  • 我找到的唯一解决办法是分离我的视频,这与其说是修复,不如说是快速破解。一旦dockerfile中的某个容器的内存耗尽,是否可以让它启动并运行另一个容器?(仅当它是堆内存而不是ram时才可能)

我可能完全忽略了Docker处理事情的方式中的一点,请毫不犹豫地解释我犯的任何错误。感谢阅读。

“堆内存”也是RAM,而不是磁盘,在操作系统级别,堆和堆栈不单独计算。您是否考虑交换空间,并且您的系统上是否配置了交换空间?内核OOM杀手是否正在杀死您的进程(
dmesg
会显示这一点)?在本机Linux上没有虚拟机,容器可以使用所有可用的系统内存。当我将我的执行分为两个单独的执行时(将我的资源分成两半,然后构建两个单独的视频进行组装),它成功了。因此,由于moviepy,所需的内存似乎过高,我认为没有解决办法,我想导出到其他机器的过程可能太繁重了。