Как увеличить память докер-машины 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файл так, чтобы вложенное свойство Memory(а CPUтакже, если оно было изменено) 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.