使用VS Code远程容器因只读文件系统无法保存文件变更
问题
使用微软的vscode-remote-try-python示例项目体验开发容器(dev-containers),构建、连接容器及运行应用均正常,但在远程容器内编辑文件并保存时,出现如下报错:
Failed to save 'app.py': Unable to write file 'vscode-remote://dev-container+2f55736572732f62726164656e2e6b696e6172642f706572736f6e616c2f7673636f64652d72656d6f74652d7472792d707974686f6e/workspaces/vscode-remote-try-python/app.py' (Unknown (FileSystemError): Error: EROFS: read-only file system, open '/workspaces/vscode-remote-try-python/app.py')
本地文件夹窗口编辑保存后,变更可同步至远程容器窗口,但无法在远程容器内直接编辑。当前使用Colima 0.2.2而非Docker Desktop,暂未发现其他关联问题,请问为何容器内的工作目录会处于只读状态?
解决方案
检查Colima挂载权限配置
Colima默认的文件挂载可能存在权限映射问题,可尝试重启Colima时指定更适配的挂载参数:colima stop colima start --mount-type 9p --mount-9p-version 9p2000.L --mount-9p-transport virtio或者启动时显式挂载用户目录确保权限正确:
colima start --volume $HOME:$HOME检查.devcontainer配置的挂载规则
打开.devcontainer/devcontainer.json,查看mounts字段是否给挂载目录加了只读限制。如果配置里有:ro或readonly后缀,直接移除即可恢复读写权限。
例如将:"mounts": ["source=${localWorkspaceFolder},target=/workspaces/vscode-remote-try-python,type=bind,consistency=cached,readonly"]修改为:
"mounts": ["source=${localWorkspaceFolder},target=/workspaces/vscode-remote-try-python,type=bind,consistency=cached"]修复容器内目录的所有者权限
进入远程容器终端,执行命令查看目录权限:ls -ld /workspaces/vscode-remote-try-python如果目录所有者不是容器默认用户(通常是
vscode),执行以下命令修改:sudo chown -R vscode:vscode /workspaces/vscode-remote-try-python也可以在
devcontainer.json中添加"remoteUser": "vscode"字段,确保容器以正确用户身份运行。升级Colima版本
Colima 0.2.2属于较旧版本,后续版本修复了不少挂载权限相关的bug。建议升级到最新稳定版后重新尝试。
内容的提问来源于stack exchange,提问作者Bart Spoon
相关产品推荐
相关产品推荐

