Docker与WSL报错:重启后创建镜像遇超时及未授权问题求助
解决WSL+Docker重启后网络超时与未授权问题
我之前在Windows用WSL搭配Docker的时候也遇到过几乎一模一样的问题,重启后突然连不上镜像仓库,还弹出超时和未授权错误。给你整理了几个按优先级排序的修复步骤,你可以一步步试:
1. 先确认WSL与Docker Desktop的集成状态
很多时候重启后Docker的WSL集成会莫名其妙失效:
- 打开Docker Desktop,点击右上角设置图标,找到Resources > WSL Integration
- 确保你正在使用的WSL发行版(比如Ubuntu)是勾选状态,没勾的话勾选上,然后点击Apply & Restart重启Docker
- 打开WSL终端,输入
docker info,如果能正常返回Docker daemon的详细信息,说明连接没问题;要是还是报错,继续往下走
2. 重置Docker网络配置
网络超时大概率是DNS缓存或者代理干扰导致的,先重置Docker的网络:
- 右键任务栏的Docker图标,选择Quit Docker Desktop彻底关闭
- 打开CMD(命令提示符),依次运行以下命令:
net stop docker net stop com.docker.service docker network prune -f docker system prune -af - 重新启动Docker Desktop,然后尝试拉取一个测试镜像(比如
docker pull hello-world),看看能不能成功
3. 修复WSL的DNS解析
WSL默认的DNS有时候会跟着Windows的网络变化出问题,导致无法解析Docker Hub的地址:
- 在WSL终端里输入
sudo nano /etc/resolv.conf编辑DNS配置文件 - 把里面的内容替换成公共DNS服务器,比如:
nameserver 8.8.8.8 nameserver 1.1.1.1 - 按
Ctrl+O保存,Ctrl+X退出,然后运行ping registry-1.docker.io,如果能正常收到响应,说明DNS问题解决了,再试Docker命令
4. 清理Docker登录缓存解决未授权错误
UNAUTHORIZED错误通常是登录缓存过期或者异常导致的:
- 在WSL终端里运行
docker logout,清空当前的登录凭证 - 如果需要登录Docker Hub或者私有仓库,重新输入
docker login(Docker Hub的话直接回车,然后输入账号密码;私有仓库要加上仓库地址) - 要是你之前改过Docker镜像源,检查一下镜像源的配置有没有问题,比如
/etc/docker/daemon.json文件里的镜像地址是否正确
5. 重置WSL与Docker的关联
如果上面的步骤都没用,试试彻底重置两者的关联:
- 在Docker Desktop设置里,先取消勾选所有WSL发行版的集成,点击Apply & Restart
- 打开WSL终端,运行
wsl --shutdown,关闭所有WSL实例 - 重新打开Docker Desktop,再次勾选WSL集成,重启Docker后测试
要是所有方法都试过还是不行,可以尝试完全卸载重装:
- 先卸载Docker Desktop,然后运行
wsl --unregister <你的WSL发行版名称>(比如wsl --unregister Ubuntu) - 重新安装WSL发行版和Docker Desktop,安装过程中尽量保持默认配置,不要随意修改网络相关设置
内容的提问来源于stack exchange,提问作者Alan Aranda
相关产品推荐
相关产品推荐

