如何增加Mac上docker-machine的内存

121

我对Docker很新,正在尝试使用Docker映像设置MemSQL。该教程链接为http://docs.memsql.com/4.0/setup/docker/。我使用的是Mac电脑,但是该教程使用的boot2docker已经被弃用了。

虚拟机需要有4GB内存以运行。教程中指定了如何在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.
8个回答

200

您可以通过命令行来完成此操作。例如,要将该机器从默认的1CPU / 2048MB RAM更改为:

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
7
这个答案应该放在顶部。 - nakajuice
8
请注意,执行命令后,“docker-machine inspect”不会显示任何更改。但是,如果您运行“docker stats”,就会看到更改已应用。 - slovit
@slovit 和其他人:然后您可以修改 config.json 文件以反映实际大小。例如:对于 default,在示例解决方案中使用的,修改 ~/.docker/machine/machines/default/config.json 文件,使 Driver 下的 Memory(如果还要修改,则包括 CPU)子属性更改为 4096。然后,docker-machine inspect 将显示正确的值。 - ScriptAutomate

113

创建 Docker 虚拟机时,您可以指定内存大小:

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

如果这有帮助,请告诉我。


这绝对是调整内存分配的正确位置。然而,在重新启动此VM后仍然收到相同的错误消息。在check-system程序(https://github.com/memsql/memsql-docker-quickstart/blob/master/check-system)中,我看到了以下几行代码,可以确定这个错误:`ONE_MB = 1024 ** 2virtual_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
通过更改配置无法使其正常工作,但是按照上面所示的删除并重新创建Docker机器VM解决了问题! - DJElbow
当然,我清理了第二种方式,似乎它不再起作用了。 - BMW

94

对于 macOS 上的 Docker 版本 1.12.1 (build: 12133) 及更高版本,您可以在 UI 中更改 CPU 和 RAM,并重新启动 Docker。您可以在工具栏中找到偏好设置。下面附上示例图片以便清晰理解。

2020 年 8 月更新: 偏好设置 -> 资源 (感谢 @swedge218)

旧步骤(现在可能已经失效):偏好设置 -> 高级 -> 调整资源 -> 应用并重启

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

docker 高级选项卡(内存)


3
已移至高级选项卡。感谢分享此信息。 - GabLeRoux
那真是显而易见又不可思议 - 谢谢! - AlienWebguy
如果我使用Dinghy和VirtualBox,这些更改是否也适用?还是我只能使用VBoxManage来调整内存大小? - Artur79
3
有没有命令行的替代方法?我在Mac上安装了Docker,但是似乎docker-machine ls没有任何输出,因此我无法修改默认机器。 - Andrea Bergonzo
1
今天是首选项->资源。 - swedge218

45

我是Docker Machine的维护人员。 我认为手动调整config.json不起作用。

您有两个选项,要么使用--virtualbox-memory创建机器,要么在VirtualBox GUI中调整VM的内存(我认为是“设置>系统”)。 确保机器已关闭,应该会有一个小滑块可供使用。

编辑:另一个答案表明您也可以使用VBoxManage从命令行执行就地操作。


3
这个方法可行,但请注意,即使在 VirtualBox GUI 中更改了内存大小,docker-machine inspect 仍将继续报告原始的内存大小。 - Tamlyn
2
没错,为了让 docker-machine inspect 报告准确的数量,您确实需要编辑 config.json(这是 inspect 获取信息的地方)。 - nathanleclaire
1
在Virtualbox中进行操作是最简单的。 - Niranjan Sonachalam

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,你能否编辑你的答案并适当地格式化代码块吗?请参考此链接:https://meta.stackoverflow.com/questions/251361/how-do-i-format-my-code-blocks - TT.

14

4

如果您使用macOS的另一种虚拟化工具fox xhyve,您可以修改~/.docker/machine/default/config.json文件中的属性Driver/Memory(默认为1024),然后重新启动docker机器以应用更改。


我在 ~/.docker/machine/machines/default/config.json 下找到了它。谢谢。 - Tarek N. Elsamni

3

苹果芯片

我在寻找苹果芯片的解决方案,据我所知,docker-machine已经被弃用(链接),因此我最终使用了colima(链接)。

根据colima文档,可以定义可用的CPU数量和内存大小:

colima start --cpu 1 --memory 2 --disk 10

修改现有的虚拟机:

colima stop
colima start --cpu 4 --memory 8

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接