Mac系统下无需GUI通过Bash修改Docker内存与CPU配置的方法
如何在Bash环境下修改Mac上Docker的资源配置
刚好碰到过类似需求,给你分两种Mac上Docker的常见部署场景来说明怎么用命令行搞定,不用碰GUI:
情况1:你用的是Docker Desktop for Mac(默认用HyperKit驱动,不是VirtualBox)
现在主流的Docker Desktop是用HyperKit而非VirtualBox作为底层虚拟化,它的配置存在一个JSON文件里,完全可以用命令行修改:
先停掉Docker Desktop——必须先退出,不然修改的配置可能被覆盖或者不生效:
osascript -e 'quit app "Docker"'这个命令用AppleScript模拟GUI操作退出Docker,和你点鲸鱼图标选Quit Docker效果一样。
修改配置文件
配置文件路径是~/Library/Group Containers/group.com.docker/settings.json,推荐用jq(专门处理JSON的命令行工具,装一下很方便:brew install jq)来安全修改,避免手动改JSON出错:- 把内存改成4GB(这里用MiB单位,4096MiB=4GB):
jq '.memoryMiB = 4096' ~/Library/Group\ Containers/group.com.docker/settings.json > temp.json && mv temp.json ~/Library/Group\ Containers/group.com.docker/settings.json - 把CPU核心数改成4核:
jq '.cpus = 4' ~/Library/Group\ Containers/group.com.docker/settings.json > temp.json && mv temp.json ~/Library/Group\ Containers/group.com.docker/settings.json
要是你暂时不想装
jq,也可以用sed,但要注意Mac的sed语法和Linux有点不一样:# 修改CPU为4核 sed -i '' 's/"cpus": 2/"cpus": 4/' ~/Library/Group\ Containers/group.com.docker/settings.json # 修改内存为4096MiB sed -i '' 's/"memoryMiB": 2048/"memoryMiB": 4096/' ~/Library/Group\ Containers/group.com.docker/settings.json这里
-i ''是Mac sed的要求,表示不生成备份文件。- 把内存改成4GB(这里用MiB单位,4096MiB=4GB):
重启Docker Desktop
open -a Docker
情况2:你用的是Docker Toolbox(基于VirtualBox)
如果你的Docker是通过旧版Docker Toolbox安装的,那它确实是运行在VirtualBox的default虚拟机里,这时候可以用VirtualBox的命令行工具VBoxManage来调整资源:
先停止虚拟机(如果正在运行):
docker-machine stop default修改内存和CPU
- 把内存改成4GB:
VBoxManage modifyvm default --memory 4096 - 把CPU核心数改成4核:
VBoxManage modifyvm default --cpus 4
- 把内存改成4GB:
重启虚拟机并加载环境变量
docker-machine start default eval $(docker-machine env default)
验证修改是否生效
不管用哪种方式,重启Docker后,都可以用下面的命令确认配置已经生效:
docker info | grep -E "CPUs|Total Memory"
输出里就能看到你设置的CPU核心数和内存大小了。
内容的提问来源于stack exchange,提问作者ffConundrums
相关产品推荐
相关产品推荐

