2015-07-05 14 views
6

Moja doker kompilacji nie powiedzie się z powodu następującego błędu:doker kompilacji zawiedzie - „Nie można przydzielić pamięci”

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

więc mogę go - bez RAM :) ale mogę wyraźnie zobaczyć wolną pamięć jako zamiany:

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

Ponadto, wydaje się, że doker zajmuje ogromny kawał pamięci:

$ 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 

Więc pytanie brzmi:
dlaczego "budowanie dockera" nie używa obszaru wymiany jako dodatkowej pamięci RAM i decyduje się zabić kompilację?

+0

Jaki jest rozmiar pliku tar? – user2915097

+0

@ user2915097 to 200 MB. thx – Tal

+0

czy możemy zobaczyć plik Docker? – booyaa

Odpowiedz

0

To proste i proste. Brak ci pamięci. Musisz zwolnić pamięć, zatrzymując aplikacje.

Swap jest zwykle tysiąc razy wolniejszy niż prawdziwa pamięć. Istnieje wiele aplikacji, które zabraniają ich dane mają zostać zamienione na przykład:

  • Bazy zazwyczaj wymusić pewne krytyczne dane nie być wymieniane podczas pracy, na występy.

  • Niskopoziomowe składniki systemu, takie jak jądra i sterowniki, nie mogą być wymieniane z różnych powodów. (Jak czytać dysk wymiany jeśli sterownik dysku zostało zamienione: D)

Docker opiera się na wielu prymitywów niskim poziomie, aby uruchomić i obsługiwać kontenery, to bardzo prawdopodobne, że muszą dysponować prawdziwy pamięci. Tak więc Docker nie może działać, gdy nie masz fizycznej pamięci.

Powiązane problemy