Как выделить больше памяти для контейнера Docker

Как гласит заголовок, я пытаюсь выделить больше памяти для моего контейнера. Я использую изображение из докера-концентратора под названием "aallam / tomcat-mysql" на случай, если это уместно.

Когда я запускаю его как обычно без каких-либо специальных флагов, ограничение памяти составляет 2 ГБ (даже если я прочитал, что память не ограничена, если не установлена)

Вот моя статистика докера

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

Я попытался установить память явно так, но с теми же результатами

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

Я читал, что, возможно, именно VM ограничивает это. Но тогда почему статистика докеров показывает, что ограничение размера контейнера составляет 2 ГБ?

4 ответа

Решение

Тот 2GB предел, который вы видите - это общий объем памяти виртуальной машины, в которой работает докер.

Если вы используете docker-for-windows или docker-for-mac, вы можете легко увеличить его с помощью значка "Кит" на панели задач, а затем перейти в "Настройки" -> "Дополнительно":

Настройки Docker

Но если вы используете VirtualBox, откройте VirtualBox, выберите и настройте память, назначенную докеру.

Смотрите это для Mac:

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

ПАМЯТЬ По умолчанию Docker для Mac настроен на использование 2 ГБ оперативной памяти, выделенной из общего объема доступной памяти на вашем Mac. Вы можете увеличить ОЗУ в приложении, чтобы повысить производительность, установив это значение выше (например, до 3) или ниже (до 1), если вы хотите, чтобы Docker для Mac использовал меньше памяти.

Для Windows:

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

Память - измените объем памяти, используемый Docker для Windows Linux VM

Выделите максимальное количество памяти для вашей док-машины из (предпочтения докера -> продвижение) Снимок экрана предварительных настроек., Это установит максимальный предел потребления докером при работе контейнеров. Теперь запустите ваше изображение в новом контейнере с флагом -m=4g для оперативной памяти 4 ГБ или более. например

docker run -m=4g {imageID}

Не забудьте применить изменения увеличения лимита поршня. Перезапустите докер и проверьте, увеличился ли предел памяти. Это может быть одним из факторов, по которым вы не видите увеличения лимита оперативной памяти в док-контейнерах.

Если вы хотите изменить контейнер по умолчанию и используете Virtualbox, вы можете сделать это через командную строку / CLI:

docker-machine stop
VBoxManage modifyvm default --cpus 2
VBoxManage modifyvm default --memory 4096
docker-machine start

Снимки экрана для Docker Desktop V3.3.3 (Mac)

Другие вопросы по тегам