[英]“virtual memory exhausted” when building Docker image
構建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的所有這些年中,我從未見過任何東西。
有沒有辦法增加Mac OS上Docker構建的交換空間?
如果不是,那么在構建Docker映像時如何解決“虛擬內存耗盡”錯誤?
這與XHyve似乎無關緊要。
如本主題所述
我認為VM的默認大小為16GB。 即使在將VM的內存增加到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設置 ,以在XHyve上下文中進行測試。
在這里或在docker-root-xhyve/contrib/makehdd/makehdd.sh
也可以看到mkswap
。
由於主機中有足夠的可用內存,因此建議您為后面的Docker VM分配更多的內存。
如前所述這里 :
如我所見,您在OSX上,該OSX在Linux VM上運行docker。 單擊任務欄中的鯨魚圖標,配置最大內存。 默認為2G。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.