Як збільшити пам'ять докер-машини Mac


108

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

Для роботи VM потрібно 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
Не вдалося налагодити цю роботу, змінивши конфігурацію, але видалення та відтворення докер-машини vm, як показано вище, вирішили проблему!
DJElbow

Звичайно, я прибираю другий спосіб, здається, це вже не працює.
BMW

178

Це можна зробити за допомогою командного рядка. Наприклад, щоб змінити машину з типового запуску оперативної пам’яті 1cpu / 2048MB:

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
Це спрацювало навіть тоді, коли GUI (версія 5.0.16) не хотів.
MikeF

6
Ця відповідь повинна бути вгорі
nakajuice

5
Зауважте, що після виконання команди docker-machine inspectне відображатиметься жодних змін. Однак якщо ви запустите, docker statsви побачите, що зміни були застосовані.
slovit

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

80

Для Docker версії 1.12.1 (збірка: 12133) і новішої версії на macOS є можливість зміни процесора та оперативної пам’яті з інтерфейсу користувача та перезавантаження докера. Ви можете знайти налаштування на панелі інструментів. Прикріплення зображень для наочності.

Оновлення: серпень 2020 року: Налаштування -> Ресурси (дякую @ Swedenge218)

Старий крок (напевно, зараз не існує): Налаштування -> Додатково -> Налаштування ресурсів -> Застосувати та перезапустити

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

вкладка "Докер" (пам'ять)


3
Це перейшло на вкладку «Додатково». Дякуємо, що поділилися цим.
GabLeRoux

Людина, яка була і очевидною, і зовсім неінтуїтивною - дякую!
AlienWebguy

Чи застосовуються ці зміни також, якщо я використовую човни з virtualbox? Або я повинен використовувати лише VBoxManage для налаштування розміру пам’яті?
Artur79

2
Чи є еквівалентний цьому командний рядок? У мене є Docker для Mac, але, очевидно, докер-машина ls не дає мені нічого, тому я не можу змінити машину за замовчуванням.
Андреа Бергонцо

Це Налаштування -> Ресурси на сьогодні.
Швеція218

42

Тут підтримується докер-машина. Я не думаю, що налаштування config.jsonвручну спрацює.

Ваші два варіанти - або створити машину з --virtualbox-memoryнабором, або відрегулювати пам'ять VM в GUI VirtualBox (я думаю, що "Налаштування> Система" для цього VM). Переконайтесь, що машина вимкнута, і там повинен бути невеликий повзунок, який працює.

EDIT: Ще одна відповідь показує, що ви можете виконувати операцію на місці з командного рядка також, використовуючи VBoxManage.


3
Це працює, але зауважте, що docker-machine inspectнадалі буде повідомлятися про початковий об'єм пам'яті навіть після зміни її у графічному інтерфейсі VirtualBox.
Тамлін

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

1
Робити це у Virtualbox найпростіше
Niranjan Sonachalam

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 властивість драйвер / пам'ять (за замовчуванням 1024), а потім перезапустити докер-машину, щоб застосувати зміни


Я знайшов це під ~/.docker/machine/machines/default/config.json. Спасибі 👍
Тарек Н. Ельшамні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.