WSL 2创建容器挂载/var/run/docker.sock报错not a directory怎么办
故障解决方法
核心根因
该报错是WSL2环境下Docker套接字路径映射异常导致,核心诱因有三种:
- 挂载命令的路径末尾误加斜杠,被Docker识别为目录挂载请求
- Docker Desktop生成的
/var/run/docker.sock是软链接,挂载时无法被Docker daemon正确识别为套接字文件 - WSL2与Docker Desktop的集成配置失效,套接字的挂载上下文异常
解决方案
- 修正挂载命令格式:删除源路径、目标路径末尾的多余斜杠,正确的参数写法为
不要写成-v /var/run/docker.sock:/var/run/docker.sock-v /var/run/docker.sock:/var/run/docker.sock/,末尾斜杠会触发目录挂载校验报错 - 替换为套接字真实路径挂载:执行命令
readlink -f /var/run/docker.sock获取软链接指向的真实套接字路径,用真实路径替换源路径参数即可,示例:- 执行查询返回真实路径:
/mnt/wsl/docker-desktop/shared-sockets/guest-services/docker.sock - 修改挂载参数为:
-v /mnt/wsl/docker-desktop/shared-sockets/guest-services/docker.sock:/var/run/docker.sock
- 执行查询返回真实路径:
- 重置WSL集成配置(Docker Desktop用户适用):打开Docker Desktop设置界面,进入「Resources」→「WSL Integration」,关闭当前使用的WSL发行版集成开关,点击Apply & Restart重启Docker Desktop,重启后重新开启对应发行版的集成开关,等待配置同步完成后再执行容器创建命令
- 重启Docker服务(原生WSL2 Docker用户适用):未安装Docker Desktop、直接在WSL2内安装Docker的用户,执行
sudo systemctl restart docker重启Docker服务,修复套接字挂载上下文异常
验证方案
容器启动成功后,进入容器内部执行docker ps命令,输出结果和WSL2宿主端执行docker ps的结果完全一致,即为修复成功。
内容的提问来源于stack exchange,提问作者CS1999
相关产品推荐
相关产品推荐

