2015-06-25 11 views
7

Ich möchte einen Andock-Container ausführen, der viel Arbeitsspeicher auf einer Maschine benötigt, die nicht viel RAM hat. Ich habe versucht, den für den Container verfügbaren Swap-Speicherplatz vergeblich zu erhöhen. Hier ist der letzte Befehl, den ich versuchte:Wie kann der verfügbare Auslagerungsspeicher in der virtuellen Boot2docker-Maschine erhöht werden?

docker run -d -m 1000M --memory-swap=10000M --name=my_container my_image 

Im Anschluss an diesen tips wie Speichermetriken zu überprüfen, fand ich folgende:

$ boot2docker ssh 

[email protected]:~$ cat /sys/fs/cgroup/memory/docker/35af5a072751c7af80ce7a255a01ab3c14b3ee0e3f15341f7bb22a777091c67b/memory.stat 
cache 454656 
rss 65015808 
rss_huge 29360128 
mapped_file 208896 
writeback 0 
swap 0 
pgpgin 31532 
pgpgout 22702 
pgfault 49372 
pgmajfault 0 
inactive_anon 28672 
active_anon 65183744 
inactive_file 241664 
active_file 16384 
unevictable 0 
hierarchical_memory_limit 1048576000 
hierarchical_memsw_limit 10485760000 
total_cache 454656 
total_rss 65015808 
total_rss_huge 29360128 
total_mapped_file 208896 
total_writeback 0 
total_swap 0 
total_pgpgin 31532 
total_pgpgout 22702 
total_pgfault 49372 
total_pgmajfault 0 
total_inactive_anon 28672 
total_active_anon 65183744 
total_inactive_file 241664 
total_active_file 16384 
total_unevictable 0 

Ist es möglich, einen Behälter zu laufen, der auf einem 5G Speicher benötigt Maschine, die nur 4 GB physischen Speicher hat?

+0

nicht haben Sie den RAM erschöpfen, bevor der Swap verwendet wird? ... es sei denn, das System ist mit Swapiness konfiguriert. – dnozay

+0

Ich muss einen schnellen Test schreiben, damit der Speicher nicht mehr ausreicht. Ich denke, ich muss den Swap-Speicherplatz in meinem boot2docker-vm erhöhen. http://www.carlboettiger.info/2014/08/25/reproducible-research-environments-with-Docker.html#enable-swapping-if-testing-on-the-smallest-image – Andrew

Antwort

12

Diese GitHub issue war sehr hilfreich, um herauszufinden, wie der verfügbare Auslagerungsspeicher in boot2docker-vm erhöht werden kann. Anpassung an meiner Situation habe ich die folgenden Befehle in die boot2docker-vm ssh und eine neue Auslagerungsdatei einzurichten:

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 
+0

Für alle Interessierten: Damit die Auslagerungsdatei bei jedem 'docker-machine'-Start gemountet wird, müssen Sie ssh an die Maschine anhängen und' swapon/mnt/sda1/swapfile' an '/ var/lib/boot2docker/bootsync.sh' anhängen (oder'/var/lib/boot2docker/bootlocal.sh'). Erstellen Sie die gewünschte '* .sh' Datei, wenn sie fehlt (was sehr wahrscheinlich ist). [mehr Infos] (https://github.com/boot2docker/boot2docker/blob/master/doc/FAQ.md#local-customisation-with-persistent-partition) (tl; dr: modifizierende fstab wird nicht zwischen den Andockern gespeichert Startups der Maschine) –