背景
在 Mac 上通过 VS Code 使用 Dev Containers 功能时,遇到了一系列 NFS 挂载和 Docker 启动问题。本文将分享完整的解决方案。
第一步:Unraid 服务端设置(修复”无权限”)
1. 全局设置
进入 设置 → NFS,将 Max Server Protocol Version 改为 NFSv3(对 Mac 兼容性最好)。
2. 共享设置
进入 共享 (Shares) → my_mac:
- 安全性:私有 (Private)
- 规则 (Rule):填写规则
规则写法说明:
| 写法 | 含义 | 安全性 |
|---|---|---|
10.0.0.5(rw,insecure,no_root_squash) | 仅允许指定 IP | 最高(推荐) |
10.0.0.0/24(rw,insecure,no_root_squash) | 允许整个网段 | 中等 |
*(rw,insecure,no_root_squash) | 允许所有 IP | 较低 |
建议:填写你 Mac 的具体 IP 地址,如
10.0.0.5(rw,insecure,no_root_squash)关键参数:insecure是 Mac 连接的关键,no_root_squash确保 Docker 有权写入。
第二步:Mac 客户端连接(建立挂载点)
1. 清理旧挂载
在 Finder 中退出之前连接失败的 NFS 盘。
2. 使用完整路径连接
按 Cmd + K,输入:
nfs://<你的Unraid服务器IP>/mnt/user/my_mac
注意:必须带上
/mnt/user/前缀,这是 Unraid 的真实路径。
3. 确认挂载点
确保在 Mac 终端执行以下命令能看到文件:
ls /Volumes/my_mac/code/lamda--est
第三步:Colima 虚拟机设置(让 Docker 看到 NFS)
Colima 默认不信任 /Volumes 路径且默认为只读,须修改配置。
1. 修改配置
执行:
nano ~/.colima/default/colima.yaml
2. 调整挂载项
找到 mounts 部分,改为:
mounts:
- location: /Volumes/my_mac/code
writable: true # 必须改为 true
3. 重启 Colima
执行:
colima restart
4. 验证
执行 colima ssh 进入虚拟机,输入:
ls /Volumes/my_mac/code
如果能看到内容,说明 Docker 引擎已经就绪。
第四步:Dev Container 配置(启动容器)
修改你的 .devcontainer/devcontainer.json,确保路径对齐:
{
"name": "Python3 & pyenv & PDM",
"build": {
"dockerfile": "Dockerfile"
},
"workspaceFolder": "/workspaces/lamda--est",
"workspaceMount": "type=bind,source=/Volumes/my_mac/code/lamda--est,target=/workspaces/lamda--est,consistency=cached",
"customizations": {
"vscode": {
"extensions": ["ms-python.python", "donjayamanne.python-environment-manager"]
}
},
"remoteUser": "vscode"
}
最后一步
现在请尝试:
- 重启 Colima
- 在 VS Code 中点击 Rebuild and Reopen in Container
祝你成功!