Win10 WSL1+VSCode环境下如何让devcontainer以本地用户而非root运行
实现容器与WSL用户UID/GID对齐的方法
你当前使用的是微软官方预构建的TypeScript/Node开发容器镜像,原生支持自定义运行用户的UID、GID,按以下步骤操作即可:
- 首先在WSL终端执行以下命令,获取你本地用户的UID和GID(将示例中的
my-uid替换为你实际的WSL用户名):# 查看UID id -u my-uid # 查看GID id -g my-uid - 修改
.devcontainer.json,新增remoteUser、containerEnv等配置项,修改后完整配置如下:{ "name": "my-container", "image": "mcr.microsoft.com/vscode/devcontainers/typescript-node:0-14", "forwardPorts": [3000], "postCreateCommand": "bash scripts/install-dev-tools.sh", "postStartCommand": "cd volvofinans && yarn install", // 指定VSCode远程连接使用的非root用户,该镜像默认预制了node普通用户 "remoteUser": "node", // 传递环境变量自动调整node用户的UID/GID为你本地用户的对应值 "containerEnv": { "PUID": "替换为你刚才查询到的UID数值,比如1000", "PGID": "替换为你刚才查询到的GID数值,比如1000" }, // 保留初始运行用户为root,确保postCreate等初始化命令的执行权限 "runArgs": ["--user", "root"] } - 按下F1呼出VSCode命令面板,选择
Remote-Containers: Rebuild Container重建容器 - 容器启动后打开内置终端,执行
id命令,输出的UID、GID与你WSL本地用户一致即为配置生效。
补充说明:该镜像的
node用户默认配置了无密码sudo权限,如果你在后续操作中需要安装系统依赖、修改系统配置,直接在命令前加sudo即可执行。
内容的提问来源于stack exchange,提问作者4integration
相关产品推荐
相关产品推荐

