112

I am new to Docker, and trying to go through this tutorial setting up MemSQL from a Docker image - http://docs.memsql.com/4.0/setup/docker/ . I am on a Mac, and the tutorial uses boot2docker which seems to have been deprecated.

The VM needs 4GB memory to run. The tutorial specifies how to do this with boot2docker but I cannot find a way to do this with the docker-machine/docker toolbox.

Here is the command I am using and the error I am getting just trying to go through the tutorial without altering the boot2docker config.

docker run --rm --net=host memsql/quickstart check-system
Error: MemSQL requires at least 4 GB of memory to run.
laffuste
  • 13,488
  • 6
  • 71
  • 83
DJElbow
  • 2,905
  • 10
  • 37
  • 51

7 Answers7

187

You can do this via the command line. For example, to change the machine from the default 1cpu/2048MB RAM run:

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

You can then check your settings:

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

And for docker-machine inspect to report the correct state of things, edit ~/.docker/machine/machines/default/config.json to reflect your changes.

Vic Seedoubleyew
  • 9,705
  • 6
  • 40
  • 61
Ran Rubinstein
  • 2,175
  • 1
  • 12
  • 7
  • 1
    This worked even when the GUI (version 5.0.16) would not. – MikeF Jan 26 '17 at 20:58
  • 6
    This answer should be at the top – nakajuice Jun 06 '17 at 13:35
  • 6
    Note that after the command is executed `docker-machine inspect` won't show any changes. However, if you run `docker stats` you'll see that the changes have been applied. – slovit Oct 29 '18 at 18:58
  • @slovit and others: You can then modify the docker-machine `config.json` file to reflect the actual size. Example: for `default`, as used in the example solution, modify the `~/.docker/machine/machines/default/config.json` file so that the `Memory` (and `CPU` if also modified) subproperty under `Driver` is changed to `4096`. Then, `docker-machine inspect` will show the proper value. – ScriptAutomate May 03 '20 at 01:35
111

when you create docker machine, you can nominate the memory size:

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

Let me know if this helps.

BMW
  • 34,279
  • 9
  • 81
  • 95
  • This definitely seems like the right place to adjust memory allocation. However, still getting the same error after restarting this VM. In the `check-system` program (https://github.com/memsql/memsql-docker-quickstart/blob/master/check-system), I am seeing these lines which would determine this error. `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 Sep 29 '15 at 18:23
  • 2
    Wasn't able to get this working by altering the config, but deleting and recreating the docker machine vm as shown above solved the issue! – DJElbow Sep 29 '15 at 20:12
  • Sure, I clean the second way, seems it doesn't work any more. – BMW Jan 11 '16 at 23:06
88

For Docker version 1.12.1 (build: 12133) and higher on macOS there is an option to change CPU's and RAM from UI and restart docker. You can find the preferences from toolbar. Attaching images for clarity.

Update: Aug 2020: Preferences -> Resources (thank you to @swedge218)

Old Step (probably defunct now): Preferences -> Advanced -> adjust resources -> Apply & Restart

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

docker advanced tab (memory)

Srikar Appalaraju
  • 66,073
  • 51
  • 206
  • 260
43

Docker Machine maintainer here. I don't think adjusting the config.json manually will work.

Your two options are to either create the machine with --virtualbox-memory set, or to adjust the VM's memory in the VirtualBox GUI ("Settings > System" for that VM I think). Make sure the machine is powered off and there should be a little slider that works.

EDIT: Another answer shows that you can do the in-place operation from the command line as well using VBoxManage.

bluehallu
  • 9,845
  • 8
  • 38
  • 59
nathanleclaire
  • 863
  • 6
  • 10
14

I couldn't get the other answers to work. The only thing that worked for me was to remove the default machine and re-create it with more memory.

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

This fix was found here: https://www.ibm.com/developerworks/community/blogs/jfp/entry/Using_Docker_Machine_On_Windows?lang=en

bbuie
  • 557
  • 5
  • 15
14

Other answers showed how to change the memory using VBoxManage:

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

To confirm the change from the command line:

VBoxManage showvminfo default | grep Memory

OR

docker-machine ssh default free
cpep
  • 143
  • 1
  • 4
  • Hi cpep, can you [edit] your answer and [format the code blocks](https://meta.stackoverflow.com/questions/251361/how-do-i-format-my-code-blocks) properly? – TT. Sep 27 '17 at 07:56
4

fox xhyve (another virtualization under macos) you can modify ~/.docker/machine/default/config.json property Driver/Memory (default to 1024) then restart docker machine to apply changes

dchekmarev
  • 462
  • 3
  • 5