Jak przypisać więcej pamięci do kontenera Docker


117

W miarę jak czyta się tytuł, próbuję przypisać więcej pamięci do mojego kontenera. Używam obrazu z centrum Docker o nazwie „aallam / tomcat-mysql”, jeśli jest to istotne.

Kiedy uruchamiam go normalnie bez żadnych specjalnych flag, jest limit pamięci 2 GB (mimo że czytam, że pamięć jest nieograniczona, jeśli nie jest ustawiona)

Oto moje statystyki dokerów

CONTAINER           CPU %               MEM USAGE / LIMIT       MEM %               NET I/O             BLOCK I/O           PIDS
ba57d6c9e9d2        0.22%               145.6 MiB / 1.952 GiB   7.29%               508 B / 508 B       0 B / 6.91 MB       68

Próbowałem ustawić pamięć w ten sposób, ale z tymi samymi rezultatami

docker run -d --memory=10g --memory-swap=-1 -e MYSQL_PASSWORD=password -p 3307:3306 -p 8081:8080 aallam/tomcat-mysql

Czytałem, że być może maszyna wirtualna jest tym, co ją ogranicza. Ale w takim razie dlaczego statystyki dockera pokazują, że limit rozmiaru kontenera wynosi 2 GB?

Odpowiedzi:


203

Widoczny 2GBlimit to całkowita pamięć maszyny wirtualnej, na której działa docker.

Jeśli korzystasz z docker-for-windows lub docker-for-mac, możesz łatwo zwiększyć go za pomocą ikony Whale 🐳 na pasku zadań, a następnie przejdź do Preferencje -> Zaawansowane:

Preferencje Dockera

Ale jeśli używasz VirtualBox w tyle, otwórz VirtualBox, wybierz i skonfiguruj pamięć przypisaną do docker-machine.

Zobacz to dla Maca:

https://docs.docker.com/docker-for-mac/#memory

PAMIĘĆ Domyślnie Docker for Mac korzysta z 2 GB pamięci wykonawczej przydzielonej z całkowitej dostępnej pamięci na komputerze Mac. Możesz zwiększyć ilość pamięci RAM w aplikacji, aby uzyskać szybszą wydajność, ustawiając tę ​​liczbę wyższą (na przykład na 3) lub niższą (na 1), jeśli chcesz, aby Docker dla komputerów Mac zużywał mniej pamięci.

Dla Windowsa:

https://docs.docker.com/docker-for-windows/#advanced

Pamięć - zmień ilość pamięci używanej przez platformę Docker dla maszyny wirtualnej z systemem Windows Linux


72
Jak to zrobić bez GUI?
Philippe

13
@Philippe, jaki jest Twój przypadek użycia? Docker dla Windows lub Docker dla Mac jest dostarczany z guli. Myślę, że twoja sprawa ma natywny docker na Linuksie (bez żadnej maszyny wirtualnej, co ma miejsce w przypadku systemów produkcyjnych / chmury). W takich przypadkach nie musisz konfigurować pamięci maszyny wirtualnej, ponieważ docker ma maszynę do otworów do swoich zastosowań.
Robert

10
Tak, odkryłem to później. Więc jeśli chcę, aby mój kontener Docker miał> 4 GB pamięci RAM, nie muszę nic robić, jeśli programuję w systemie Linux?
Philippe

3
Nie jest to możliwe, głównie dlatego, że nie przypisujesz pamięci do kontenerów docker, zamiast tego ograniczasz ilość pamięci, z której może korzystać kontener. Zwróć uwagę, że obecna odpowiedź nie dotyczy przypisywania pamięci do kontenerów, ale przypisywania pamięci do maszyny wirtualnej, na której działa docker.
Robert

2
@SiddharthPant, docker działający bezpośrednio na Linuksie będzie wykorzystywał tyle pamięci, ile jest dostępne, dlatego nie ma ograniczeń innych niż fizyczne.
Robert

21

Przydziel maksymalną pamięć do maszyny docker z (preferencje dockera -> zaawansowane)

Zrzut ekranu ustawień zaawansowanych: Zrzut ekranu ustawień zaawansowanych.

Spowoduje to ustawienie maksymalnego limitu wykorzystania platformy docker podczas uruchamiania kontenerów. Teraz uruchom obraz w nowym pojemniku z flagą -m = 4g na 4 gigabajty pamięci RAM lub więcej. na przykład

docker run -m=4g {imageID}

Pamiętaj, aby zastosować zmiany zwiększania limitu pamięci RAM. Zrestartuj docker i dwukrotnie sprawdź, czy limit pamięci RAM wzrósł. Może to być jeden z powodów, dla których nie widać wzrostu limitu pamięci RAM w kontenerach docker.


17

Jeśli chcesz zmienić domyślny kontener i korzystasz z Virtualbox, możesz to zrobić za pomocą wiersza poleceń / CLI:

docker-machine stop
VBoxManage modifyvm default --cpus 2
VBoxManage modifyvm default --memory 4096
docker-machine start
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.