Docker入门报错:获取OAuth令牌失败 - 证书验证问题
解决WSL2环境下Docker拉取镜像的x509证书验证错误
方法1:临时配置Docker跳过证书验证(应急用)
- 打开WSL2的Docker配置文件,路径为
/etc/docker/daemon.json,如果文件不存在就直接创建 - 写入以下配置内容:
{ "insecure-registries": ["docker.io"] }
- 重启Docker服务生效:
sudo systemctl restart docker
注意:这个方法会关闭对docker.io的证书校验,仅适合测试环境或信任当前网络的场景,不建议长期使用
方法2:同步Windows根证书到WSL2
WSL2的证书存储和Windows独立,若Windows使用了企业/代理证书,需要同步到WSL2:
- 在Windows系统打开「证书管理器」,找到「受信任的根证书颁发机构」,导出相关证书为Base64编码的CER格式
- 将导出的CER文件复制到WSL2的
/usr/local/share/ca-certificates/目录下 - 执行证书更新命令:
sudo update-ca-certificates
- 重启Docker服务:
sudo systemctl restart docker
方法3:修复WSL2的代理配置
如果Windows使用了代理,WSL2的代理设置可能未同步导致证书验证失败:
- 先查看当前代理环境变量:
echo $HTTP_PROXY echo $HTTPS_PROXY
- 若代理地址不正确,临时设置(替换成你的Windows主机IP和代理端口):
export HTTP_PROXY=http://192.168.x.x:端口号 export HTTPS_PROXY=http://192.168.x.x:端口号
- 要永久生效,把配置写入shell配置文件(比如
~/.bashrc,如果用zsh就写~/.zshrc):
echo "export HTTP_PROXY=http://192.168.x.x:端口号" >> ~/.bashrc echo "export HTTPS_PROXY=http://192.168.x.x:端口号" >> ~/.bashrc source ~/.bashrc
提示:Windows主机IP可以在WSL2里执行cat /etc/resolv.conf,取nameserver对应的IP
内容的提问来源于stack exchange,提问作者Jersey Dude
相关产品推荐
相关产品推荐

