2015-07-05 18 views
6

mia build finestra mobile non riesce con il seguente errore:finestra mobile compilazione fallisce - "non può allocare memoria"

Untar fork/exec /usr/bin/docker: cannot allocate memory 

Così ho get it - non RAM :) ma posso vedere chiaramente memoria libera come swap:

   total  used  free  shared buffers  cached 
Mem:   7517  7334  183   0   59  515 
-/+ buffers/cache:  6759  758 
Swap:   4095  2635  1460 

Inoltre, sembra che finestra mobile prende un pezzo enorme di memoria:

$ top -a 
top - 03:48:07 up 18 days, 17 min, 2 users, load average: 1.88, 0.93, 0.42 
Tasks: 127 total, 2 running, 125 sleeping, 0 stopped, 0 zombie 
Cpu(s): 49.9%us, 14.0%sy, 0.0%ni, 13.7%id, 22.2%wa, 0.0%hi, 0.2%si, 0.0%st 
Mem: 7697592k total, 6351288k used, 1346304k free, 138804k buffers 
Swap: 4194300k total, 310324k used, 3883976k free, 1449268k cached 

    PID USER  PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
1340 root  20 0 3994m 2.1g 7548 S 6.6 28.8 64:20.43 docker 
5318 root  20 0 1499m 724m 4368 S 65.5 9.6 0:08.80 ruby 
    978 root  20 0 1010m 616m 32 S 0.0 8.2 0:27.24 ruby 

Quindi la domanda è:
01.235.164,106 milaperché "docker build" non usa l'area di scambio come RAM extra e decide di terminare la compilazione?

+0

Qual è la dimensione del file tar? – user2915097

+0

@ user2915097 è 200Mb. grazie – Tal

+0

possiamo vedere il Dockerfile? – booyaa

risposta

0

È semplice e chiaro. Hai esaurito la memoria. Devi liberare memoria fermando le applicazioni.

Swap è in genere un migliaio di volte più lento della memoria reale. Ci sono un sacco di applicazioni che impedirà loro dati da scambiare, ad esempio:

  • Basi di dati tipicamente forzare alcuni dati critici per essere non swappable, per le prestazioni.

  • Componenti di sistema di basso livello come kernel e driver non possono essere scambiati, per vari motivi. (Come leggere il disco di swap, se il driver del disco è stato scambiato:? D)

Docker si basa su molte primitive di basso livello per eseguire e gestire i contenitori, è molto probabile che hanno bisogno di avere memoria reale disponibile. Pertanto Docker non può essere eseguito quando si è senza memoria fisica.

Problemi correlati