登录Azure容器注册表时出现net/http: TLS handshake timeout问题求助
解决Azure容器注册表TLS握手超时问题
以下是几个可行的解决方案,按优先级尝试:
检查Docker代理配置
即便本地网络正常,Docker的独立代理配置可能导致TLS握手失败。Linux用户查看~/.docker/config.json文件,Windows/macOS用户在Docker Desktop的「设置-代理」中检查:- 若配置了代理,确认代理地址可正常访问Azure域名,且无认证错误;
- 若无需代理,清空所有代理配置后重启Docker服务。
调整Docker TLS超时参数
延长TLS握手超时时间,避免因网络延迟导致失败:- Linux下编辑
/etc/docker/daemon.json(无则新建),添加以下配置:{ "tls_handshake_timeout": 60 } - 重启Docker服务:
sudo systemctl restart docker
Windows/macOS用户可在Docker Desktop的「设置-Docker Engine」中添加上述参数,保存后重启应用。
- Linux下编辑
验证注册表网络可达性
- 用
curl测试连通性:curl -v https://newregistryforpoc.azurecr.io/v2/,观察输出是否有连接中断、证书不信任等提示; - 若身处企业网络,联系IT团队确认防火墙/安全组未阻止
*.azurecr.io域名的443端口出站流量。
- 用
升级Docker版本
老旧Docker版本可能存在TLS协议兼容性问题,升级到最新稳定版:- Linux:执行
curl -fsSL https://get.docker.com | sh - Windows/macOS:在Docker Desktop中点击「检查更新」完成升级
- Linux:执行
临时跳过TLS验证测试
仅用于排查问题(生产环境禁用),执行以下命令登录:docker login --insecure-registry newregistryforpoc.azurecr.io -u <你的用户名> -p <你的密码>若能成功登录,说明TLS证书或协议配置存在问题,需进一步排查注册表证书有效性或本地证书信任配置。
内容的提问来源于stack exchange,提问作者Neha Kavatage
相关产品推荐
相关产品推荐

