我是 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.
您可以通过命令行执行此操作。例如,要将机器从默认的 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
以反映您的更改。
创建docker机器时,可以指定内存大小:
docker-machine create -d virtualbox --virtualbox-memory 4096 default
请告诉我这是否有帮助。
这里是 Docker 机器维护者。 我认为手动调整
config.json
不起作用。
您的两个选择是创建带有
--virtualbox-memory
设置的计算机,或者在 VirtualBox GUI 中调整虚拟机的内存(我认为该虚拟机的“设置 > 系统”)。 确保机器已关闭并且应该有一个小滑块可以工作。
编辑:另一个答案表明您也可以使用
VBoxManage
从命令行执行就地操作。
我无法得到其他工作答案。唯一对我有用的就是删除默认机器并使用更多内存重新创建它。
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
其他答案显示了如何使用 VBoxManage 更改内存:
docker-machine stop default
VBoxManage modifyvm default --memory 4096
docker-machine start default
要从命令行确认更改:
VBoxManage showvminfo default | grep Memory
或
docker-machine ssh default free
fox xhyve(macos下的另一种虚拟化)可以修改~/.docker/machine/default/config.json 属性 驱动程序/内存(默认为 1024) 然后重新启动 docker 机器以应用更改
苹果硅
我正在寻找 Apple Silicon 的解决方案,据我了解,
docker-machine
已被弃用(链接),所以我最终使用了 colima(链接)。
正如 per colima 文档 可以定义 cpu 和可用 RAM 的数量,例如:
colima start --cpu 1 --memory 2 --disk 10
并修改现有虚拟机:
colima stop
colima start --cpu 4 --memory 8
Podman
# see the current value
podman machine inspect
podman machine stop
podman machine set --memory 4096
podman machine start
# confirm the new value
podman machine inspect