WSL2用Docker Rancher执行docker命令报Permission denied如何解决
问题根因
WSL2内的Docker客户端通过Unix域套接字/var/run/docker.sock对接Windows侧运行的Docker守护进程,该套接字默认仅对docker用户组的成员开放读写权限。当前使用的WSL登录账号未加入该用户组,因此会触发权限拒绝报错。
Windows CMD下命令可正常执行,是因为Windows侧Docker直接对当前登录的Windows用户做了授权,走Windows系统权限校验逻辑,和WSL内部独立的Linux权限体系不互通。
修复操作
- 执行以下命令将当前WSL用户加入
docker用户组:
sudo usermod -aG docker $USER
- 权限生效可选择两种方式:
- 即时生效:执行
newgrp docker刷新当前终端的用户组权限,不需要关闭终端 - 全局生效:如果即时生效方式无效,关闭所有WSL终端,在Windows PowerShell/CMD中执行
wsl --shutdown彻底关闭WSL实例后,重新打开Ubuntu终端即可
- 即时生效:执行
- 验证:重新进入WSL终端执行
docker ps,可正常返回容器列表(无运行中容器时返回空表头)即修复完成。
避坑提示:不要直接执行
chmod 777 /var/run/docker.sock修改套接字权限,该操作是临时生效,WSL重启后权限会自动恢复默认,同时会放开所有用户的Docker操作权限,存在安全风险。
内容的提问来源于stack exchange,提问作者erKito
相关产品推荐
相关产品推荐

