Docker Desktop 在 macOS 上需满足系统版本≥10.15且芯片为Intel或Apple Silicon;Apple Silicon须用ARM64版,通过uname -m和sw_vers验证;资源需调至内存≥4GB、CPU按物理核75%设置;挂载慢可改路径或禁用gRPC-FUSE;DNS建议设为223.5.5.5等国内地址。
确认 macOS 版本和芯片架构是否支持 Docker Desktop
Docker Desktop 在 macOS 上只支持 macOS 10.15(Catalina)及以上,且必须是 Intel 或 Apple Silicon(M1/M2/M3)芯片。Apple Silicon 需要安装
,否则启动失败或 CPU 占用异常高。
检查方法:打开终端执行
,返回
表示 Apple Silicon,
表示 Intel。再运行
确认系统版本。
macOS 12 Monterey 及以上 + Apple Silicon:优先选最新稳定版 Docker Desktop(如 4.30+),对 Rosetta 兼容性和资源调度优化明显
macOS 10.15–11(Big Sur):只能使用 Docker Desktop 4.20.x 及更早版本,新版已移除对这些系统的签名支持
若看到
或
,大概率是架构/系统版本不匹配
安装后必须调整的 3 个关键资源设置
Docker Desktop 默认只分配 2GB 内存和 2 核 CPU,跑 Redis、PostgreSQL 或多服务 Compose 环境时会频繁 OOM 或卡死。这些设置在 GUI 里藏得深,且重启后不自动保存。
打开 Docker Desktop →
Settings → Resources
:
Memory
:至少调到
(4GB),开发中常用数据库+前端+后端三容器建议设为
CPU
:设为物理核心数的 75%,例如 M1 Pro 10 核 → 设
;Intel i7-11800H 8 核 → 设
Swap
:保持默认
即可,增大无意义,Docker on macOS 实际不使用宿主 swap
改完点
,否则不生效。别信“Apply”按钮旁的小字“Changes will take effect after restart”——它真要重启 Docker 引擎。
解决挂载卷(bind mount)在 Apple Silicon 上极慢的问题
用
挂载本地代码目录时,Apple Silicon 下文件变更监听(如 Webpack HMR、Django auto-reload)延迟常达 3–10 秒,根本没法调试。
这不是 Docker bug,而是 macOS 的
文件系统桥接层在 ARM 架构上未完全优化。临时但有效的解法:
把项目移到 Docker Desktop 自带的 Linux VM 内部路径:
→ 改用
,然后在容器内挂载该路径(需先
)
禁用 gRPC-FUSE(仅限 Docker Desktop 4.26+):终端执行
,再重启 Docker Desktop(此操作会禁用所有用户目录共享,仅适合纯容器内开发)
换用
+
缓存替代频繁挂载编译,对 Go/Python 类项目更友好
避免 DNS 超时和镜像拉取失败的网络配置
国内用户常遇到
卡住、
在容器内超时,根源是 Docker Desktop 的 DNS 默认走 macOS 系统 DNS(可能被污染或不可靠)。
进入
Settings → Docker Engine
,修改 JSON 配置:
其中
是阿里 DNS,
是 114 DNS,比默认的 8.8.8.8 在国内更稳。改完点
。
注意:
字段只影响容器内解析,不影响宿主;若公司网络强制走代理,还需额外配置
/
,否则镜像站直连仍会失败。
性能优化不是堆参数,而是让资源分配匹配真实负载模式。很多人调高内存却忽略挂载路径的 I/O 瓶颈,结果容器跑得越“快”,改一行代码等热重载的时间越长——这点在 Apple Silicon 上尤其明显。
Docker Desktop for Mac (ARM64)uname -marm64x86_64sw_versFailed to start docker daemoncom.docker.vmnetd failed to start4096 MiB6144 MiB861024 MiBApply & Restartdocker run -v /Users/xxx:/apposxfs/Users/xxx/tmp/docker-workspacemkdir -p /tmp/docker-workspacedefaults write com.docker.docker filesharingEnabled -bool falsedocker buildx bakecache-todocker pullpip install
{
"dns": ["223.5.5.5", "114.114.114.114"],
"features": {"buildkit": true},
"builder": {"gc": {"defaultKeepStorage": "20GB"}}
}
223.5.5.5114.114.114.114Apply & RestartdnshttpProxyhttpsProxy