1

在构建 Docker 映像时,有一些 C++ 脚本编译,我最终遇到如下错误:

src/amun/CMakeFiles/cpumode.dir/build.make:134: recipe for target 'src/amun/CMakeFiles/cpumode.dir/cpu/decoder/encoder_decoder_state.cpp.o' failed
virtual memory exhausted: Cannot allocate memory

但是在.cpp主机上构建相同的代码时,它工作正常。


经过一番检查,错误消息似乎与人们在 Raspberry Pi 上得到的错误消息相似,https://www.bitpi.co/2015/02/11/how-to-change-raspberry-pis-swapfile-大小在rasbian/

经过一番谷歌搜索后,Mac 论坛上的这篇文章说:

交换文件会根据需要动态创建,直到磁盘已满或内核用完页表空间。我不认为您可以更改 Mac OS X 内核中的页表空间限制。在我使用 OS X 的这些年里,我没有看到任何东西。

有没有办法增加 Docker 在 Mac OS 上构建的交换空间?

如果没有,在构建 Docker 映像时,还有什么方法可以克服“虚拟内存耗尽”错误?

4

2 回答 2

3

这似乎与 XHyve 无关。
该线程所述

我认为VM的默认大小是16GB。即使将 VM 上的 ram 提高到 16GB,我的交换空间也一直用完。

检查用于 VirtualBox VM 的方法是否适用于 XHyve:请参阅“如何增加 boot2docker 虚拟机中可用的交换空间?

boot2docker ssh

export SWAPFILE=/mnt/sda1/swapfile
sudo dd if=/dev/zero of=$SWAPFILE bs=1024 count=4194304
sudo mkswap $SWAPFILE
sudo chmod 600 $SWAPFILE
sudo swapon $SWAPFILE

exit

还要检查这个Digital Ocean Setup,再次在您的 XHyve 上下文中进行测试。
mkswap也可以在此处或中看到docker-root-xhyve/contrib/makehdd/makehdd.sh

于 2017-08-11T05:10:31.953 回答
0

由于您的主机中有足够的可用内存,我建议您为后面的 Docker VM 分配更多内存。

如此处所述:

我可以看到你在 OSX 上,它在 Linux VM 上运行 docker。单击任务栏中的鲸鱼图标配置最大内存。默认为 2G。

欲了解更多信息:https ://docs.docker.com/docker-for-mac/#memory

在此处输入图像描述

于 2017-08-11T20:10:11.183 回答