Как увеличить память докер-машины Mac


109

Я новичок в Docker и пытаюсь пройти это руководство по настройке MemSQL из образа Docker - http://docs.memsql.com/4.0/setup/docker/ . Я использую Mac, и в учебнике используются boot2dockerустаревшие версии.

Для работы виртуальной машине требуется 4 ГБ памяти. В руководстве указано, как это сделать, boot2dockerно я не могу найти способ сделать это с помощью панели инструментов docker-machine / docker.

Вот команда, которую я использую, и ошибка, которую я получаю, просто пытаюсь пройти руководство, не изменяя конфигурацию boot2docker.

docker run --rm --net=host memsql/quickstart check-system
Error: MemSQL requires at least 4 GB of memory to run.

Ответы:


111

когда вы создаете докер-машину, вы можете указать размер памяти:

docker-machine create -d virtualbox --virtualbox-memory 4096 default

Позвольте мне знать, если это помогает.


Это определенно кажется подходящим местом для настройки распределения памяти. Однако после перезапуска этой виртуальной машины по-прежнему возникает та же ошибка. В check-systemпрограмме ( github.com/memsql/memsql-docker-quickstart/blob/master/… ) я вижу эти строки, которые определяют эту ошибку. ONE_MB = 1024 ** 2, virtual_memory = psutil.virtual_memory(), if virtual_memory.total < ONE_MB * 3700: sys.stderr.write("Error: MemSQL requires at least 4 GB of memory to run.\n").
DJElbow

2
Не удалось заставить это работать, изменив конфигурацию, но удаление и воссоздание виртуальной машины докера, как показано выше, решило проблему!
DJElbow

Конечно, убираю вторым способом, вроде уже не работает.
BMW

179

Вы можете сделать это через командную строку. Например, чтобы изменить аппарат с установленным по умолчанию 1 ЦП / 2048 МБ ОЗУ, выполните:

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

Затем вы можете проверить свои настройки:

VBoxManage showvminfo default | grep Memory
VBoxManage showvminfo default | grep CPU

А docker-machine inspectчтобы сообщить о правильном положении вещей, отредактируйте, ~/.docker/machine/machines/default/config.jsonчтобы отразить ваши изменения.


1
Это работало, даже когда графический интерфейс (версия 5.0.16) не работал.
MikeF

6
Этот ответ должен быть вверху
nakajuice

5
Обратите внимание, что после выполнения команды docker-machine inspectникаких изменений не будет. Однако, если вы запустите, docker statsвы увидите, что изменения были применены.
словит

@slovit и другие: затем вы можете изменить config.jsonфайл докер-машины, чтобы он отражал фактический размер. Пример: для default, как используется в примере решения, измените ~/.docker/machine/machines/default/config.jsonфайл так, чтобы вложенное свойство MemoryCPUтакже, если оно было изменено) Driver, было изменено на 4096. Затем docker-machine inspectотобразится правильное значение.
ScriptAutomate

80

Для версии Docker 1.12.1 (сборка: 12133) и выше в macOS есть возможность изменить ЦП и ОЗУ из пользовательского интерфейса и перезапустить докер. Вы можете найти настройки на панели инструментов. Прикрепление изображений для наглядности.

Обновление: август 2020 г .: Настройки -> Ресурсы (спасибо @ swedge218)

Старый шаг (возможно, сейчас не работает): Настройки -> Дополнительно -> настроить ресурсы -> Применить и перезапустить

https://www.dropbox.com/s/znltd1v4r00nfpu/Screenshot%202017-03-24%2012.12.58.png?dl=0

вкладка docker advanced (память)


3
Это перемещено на вкладку «Дополнительно». Спасибо, что поделились этим.
GabLeRoux

Человек, который был одновременно очевиден и совершенно не интуитивен - спасибо!
AlienWebguy

Применяются ли эти изменения, если я использую лодку с виртуальным боксом? Или мне нужно использовать только VBoxManage для настройки размера памяти?
Artur79 06

2
Есть ли эквивалент этой командной строки? У меня есть Docker для Mac, но, по-видимому, docker-machine ls мне ничего не дает, поэтому я не могу изменить машину по умолчанию.
Андреа Бергонцо

Это Настройки -> Ресурсы на сегодняшний день.
swedge218,

42

Сопровождающий Docker Machine здесь. Не думаю, что config.jsonручная настройка сработает.

У вас есть два варианта: либо создать машину с помощью --virtualbox-memoryset, либо настроить память виртуальной машины в графическом интерфейсе VirtualBox («Настройки> Система» для этой виртуальной машины, я думаю). Убедитесь, что машина выключена и там должен быть небольшой бегунок, который работает.

РЕДАКТИРОВАТЬ: Другой ответ показывает, что вы также можете выполнять операцию на месте из командной строки, используя VBoxManage.


3
Это работает, но обратите внимание, что docker-machine inspectбудет продолжать сообщать исходный объем памяти даже после его изменения в графическом интерфейсе VirtualBox.
Tamlyn

2
Это правда, для того , чтобы иметь docker-machine inspectсообщить точную сумму, вы делаете должны редактировать config.json(что, где inspectполучает информацию).
nathanleclaire

1
Сделать это в Virtualbox проще всего
Ниранджан Соначалам,

14

Я не мог заставить другие ответы работать. Единственное, что у меня сработало, - это удалить машину по умолчанию и воссоздать ее с большим объемом памяти.

docker-machine rm default
docker-machine create -d virtualbox --virtualbox-memory=4096 --virtualbox-cpu-count=2 --virtualbox-disk-size=50000 default

Это исправление было найдено здесь: https://www.ibm.com/developerworks/community/blogs/jfp/entry/Using_Docker_Machine_On_Windows?lang=en


14

Другие ответы показали, как изменить память с помощью VBoxManage:

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

Чтобы подтвердить изменение из командной строки:

VBoxManage showvminfo default | grep Memory

ИЛИ

docker-machine ssh default free

Привет, cpep, можете ли вы отредактировать свой ответ и правильно отформатировать блоки кода ?
ТТ.

4

fox xhyve (другая виртуализация под macos), вы можете изменить свойство ~ / .docker / machine / default / config.json Driver / Memory (по умолчанию 1024), затем перезапустить докер-машину, чтобы применить изменения.


Я нашел это под ~/.docker/machine/machines/default/config.json. Спасибо 👍
Тарек Н. Эльсамни 02
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.