You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows7+VirtualBox5.2下Docker代理配置后拉取镜像报错求助

解决Docker代理导致的TLS握手错误问题

我来帮你搞定这个问题!从报错信息和你的配置来看,主要是代理配置的两个细节出了问题,咱们一步步修正:

1. 先修正最明显的拼写错误

你在导出环境变量时把NO_PROXY写成了NO_PROXT——这个拼写错误会导致本该绕过代理的本地Docker Machine地址(192.168.99.1/24)被强制走代理,直接引发了后续的TLS握手异常。

2. 修正HTTPS_PROXY的协议类型

你的报错proxyconnect tcp: tls: first record does not look like a TLS handshake,核心原因是:你给HTTPS_PROXY设置了https://xxx:80,但大多数企业代理的80端口是HTTP协议,不是HTTPS。

当Docker daemon尝试通过代理访问Docker Hub时,它给代理服务器发送了TLS握手请求,但代理期待的是HTTP请求,自然就报错了。你需要把HTTPS_PROXY的协议改成http://,即使是访问HTTPS站点,代理和客户端之间的连接依然是HTTP的。

3. 重新配置Docker Machine并设置正确的环境变量

步骤1:删除现有有问题的default机器

docker-machine rm default

步骤2:用正确参数重新创建机器

docker-machine create -d virtualbox \
--engine-env HTTP_PROXY="http://xxx:80" \
--engine-env HTTPS_PROXY="http://xxx:80" \
--engine-env NO_PROXY="192.168.99.1/24,localhost,127.0.0.1" \
default

这里额外加上了localhost和127.0.0.1到NO_PROXY里,避免本地请求也走代理。

步骤3:重新加载正确的环境变量

Windows下可以直接执行Docker Machine输出的激活命令:

& "C:\Program Files\Docker Toolbox\docker-machine.exe" env default | Invoke-Expression

如果手动设置的话,确保变量名和值都正确:

set HTTP_PROXY=http://xxx:80
set HTTPS_PROXY=http://xxx:80
set NO_PROXY=192.168.99.1/24,localhost,127.0.0.1

4. 验证配置并重启Docker服务

进入Docker Machine内部检查配置:

docker-machine ssh default

查看代理配置文件:

cat /var/lib/boot2docker/profile

确认里面的HTTP_PROXY、HTTPS_PROXY、NO_PROXY没有拼写错误,协议也正确。然后重启Docker服务:

sudo /etc/init.d/docker restart

完成这些步骤后,再执行docker run hello-world应该就能正常拉取镜像了!

内容的提问来源于stack exchange,提问作者Anant Pukale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:08:14