使用PowerShell无法连接Docker守护进程,CMD可正常运行求助
解决PowerShell执行
docker version报错的问题 检查Docker环境变量
- 打开PowerShell,执行
echo $env:DOCKER_HOST,查看输出是否为npipe:////./pipe/docker_engine(Windows Docker Desktop默认的命名管道地址)。如果输出为空或unix:///var/run/docker.sock,就是环境变量配置错误导致的问题。 - 打开CMD执行
echo %DOCKER_HOST%,对比两者输出,CMD的结果应该是正确的Windows端地址。
手动配置PowerShell环境变量
- 临时生效:在当前PowerShell窗口执行
$env:DOCKER_HOST = "npipe:////./pipe/docker_engine",之后再运行docker version测试连接。 - 永久生效:
- 打开PowerShell,执行
notepad $PROFILE,若提示文件不存在,先执行New-Item -Path $PROFILE -ItemType File -Force创建配置文件。 - 在打开的文件中添加一行:
$env:DOCKER_HOST = "npipe:////./pipe/docker_engine",保存后关闭。 - 重启PowerShell,环境变量会自动加载。
- 打开PowerShell,执行
检查Docker Desktop配置
- 打开Docker Desktop,进入Settings -> General,确保勾选
Use the WSL 2 based engine(使用WSL2引擎时),或Expose daemon on tcp://localhost:2375 without TLS(需要TCP连接时,优先推荐命名管道更安全)。 - 若使用WSL2子系统的PowerShell,需确认WSL内的Docker客户端指向Windows的Docker daemon,但你CMD能正常运行,大概率是Windows原生PowerShell的环境变量问题。
重置Docker客户端配置
- 若以上方法无效,可删除PowerShell的Docker配置文件:找到用户目录下的
.docker文件夹(例如C:\Users\你的用户名\.docker),删除其中的config.json文件,之后重启Docker Desktop和PowerShell。
内容的提问来源于stack exchange,提问作者MarkSeeSharp
相关产品推荐
相关产品推荐

