前言
大家好啊~ , 好久不见 , 又到周末了😏; 趁着周末时间总结一下这个星期的实习吧 : 这一周很忙 , 因为要上线项目 , 所以比较急😫 , 但是周末了 , 应该好好休息😡 于是 , 我闲着来给大家闭坑了!!!
这周,算法工程师Ailln安排了任务给我 , 叫我部署新鲜出炉的Ai项目 ,提供了多种可选方案
- 方案 A(服务器构建/服务器运行) 是最简单的方法,但是需要服务器有较好的性能,否则构建镜像会非常慢。
- 方案 B(本地构建/推送远程仓库/服务器运行) 是最复杂的方法,但是可以解决服务器性能较差的问题,以及多人协作起来更加方便。
- 方案 C(本地构建/手动上传/服务器运行) 是最通用的方法,也可以解决服务器性能较差的问题,但是需要手动上传镜像。
在服务器构建是最简单的方案 , 而在本地构建则需要你电脑上有docker环境 , 而我的电脑是windows , 安装docker有点靠运气(因为相比linux , 太坑了),还好我之前已经安装好了🤡 , 顶着C盘13G的压力硬是没有把docker环境(WSL、ubuntu、docker Desktop)删除掉 , 这不 , 它表现的机会来了~
没安装的掘友可以参照我之前写的文章
Windows上安装Docker👈 | 跳出 Linux 圈,Docker 在 Windows 撒欢!🚀🚀🚀 - 掘金 (juejin.cn)
他表现如下:
Error response from daemon: Get "registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
头顶飘过一万个草泥🐎,你就这样表现吗 ?
含泪搜寻资料无果 ,Ailln说:没有配置代理!注意是代理到docker的内部!!!
下面是docker Desktop的界面 , 不仅仅要在这里面配置阿里云的镜像(或其他)
你还要把代理部署到docker的内部
而代理的地址可以在你的魔法工具上获取 , 这里就不展现了 , 毕竟这是魔法 , 可以查查你的魔法工具的代理地址如何获取。
docker 打包成功了 , 从此也是开启了 docker 容器化部署之路 ,太爽啦 ~
下面给出解决上述问题的体系化解决方案 , 希望能够帮到各位 ~
解决网络问题
如果你在 windows 上已经安装好了 docker , 在拉取镜像的时候报一下错误
docker 报错 :Error response from daemon: Get "registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
这里给出针对 Windows 系统的完整解决方案,包含具体操作步骤和深度优化建议:
一、Windows 系统专用解决方案
1. 配置国内镜像加速(最有效)
步骤:
- 获取镜像加速地址:
- 阿里云镜像加速器(需注册获取专属地址)
- 其他公共镜像源:
[https://docker.mirrors.ustc.edu.cn](https://docker.mirrors.ustc.edu.cn)
(中科大)
- 配置镜像源:
- 通过 Docker Desktop 界面配置:
- 右键任务栏 Docker 图标 →
Settings
→Docker Engine
- 在配置文件中添加
registry-mirrors
项:{ "registry-mirrors": [ "https://your-aliyun-mirror.mirror.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn" ] }
- 点击
Apply & Restart
保存并重启 Docker- 直接修改配置文件(路径:
%USERPROFILE%\.docker\daemon.json
)
- 直接修改配置文件(路径:
- 验证配置:
docker info | Select-String "Mirror" # 查看生效的镜像源
2. 修复 DNS 解析问题
操作步骤:
- 修改 DNS 服务器:
- 打开
控制面板
→网络和共享中心
→ 当前网络连接 →属性
→IPv4 属性
- 手动设置 DNS:
- 打开
首选 DNS:8.8.8.8(Google)
备用 DNS:114.114.114.114(国内公共DNS)
- 保存后执行命令刷新缓存:
ipconfig /flushdns
- 检查域名解析:
3. 处理代理冲突
场景:企业网络或使用 VPN 时的代理配置
- 为 Docker 配置代理:
- 打开 Docker Desktop →
Settings
→Resources
→Proxies
- 填写代理信息:
- 打开 Docker Desktop →
HTTP Proxy: http://proxy.example.com:8080
HTTPS Proxy: http://proxy.example.com:8080
No Proxy: localhost,127.0.0.1,.internal
3. 重启 Docker
- 系统级代理排除:
- 在系统代理设置中排除 Docker 相关域名:
registry-1.docker.io, auth.docker.io
4. 解决 WSL2 网络问题
症状:Windows 宿主机正常但 WSL2 内无法联网
- 重置 WSL2 网络:
wsl --shutdown # 关闭所有WSL实例
netsh winsock reset # 重置网络堆栈(需管理员权限)
netsh int ip reset # 重置IP配置
重启电脑后再次启动 Docker
- 启用 WSL2 桥接模式:
创建%USERPROFILE%\.wslconfig
文件并添加:
[wsl2]
networkingMode=bridged # 使用宿主机网络模式
5. 系统时间与证书同步
- 校准时间:
- 右键任务栏时间 →
调整日期/时间
- 开启
自动设置时间
和自动设置时区
- 手动同步:
- 右键任务栏时间 →
w32tm /resync # 强制时间同步(需管理员权限)
- 更新根证书:
下载 最新根证书包,替换%ProgramFiles%\Docker\Docker\resources\certs.pem
二、进阶诊断步骤
1. 网络连通性测试
# 测试HTTPS连接(需安装curl)
curl -v https://registry-1.docker.io/v2/
# 测试端口连通性
Test-NetConnection registry-1.docker.io -Port 443
2. 防火墙/杀毒软件排查
- 暂时关闭防火墙:
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
- 杀毒软件白名单:将 Docker 相关进程(如
dockerd.exe
,com.docker.backend.exe
)加入例外
三、备用解决方案
1. 离线安装镜像
- 在可联网机器导出镜像:
docker pull alpine:latest
docker save -o alpine.tar alpine:latest
- 在目标机器导入:
docker load -i alpine.tar
2. 使用 Docker 内置诊断工具
docker diagnose # 生成诊断报告
docker --debug pull nginx # 调试模式查看详细错误
四、长效优化建议
- 企业级方案:部署 Harbor 私有镜像仓库
- 网络优化:使用 VPN 全局路由或 Socks5 代理穿透
- 版本升级:确保 Docker Desktop 为最新版本(官网下载)
附:Windows 特有错误处理
错误现象 | 解决方案 |
---|---|
WSL 2 installation is incomplete | 安装 WSL2 内核更新包 |
Hyper-V 未启用 | 管理员权限运行:Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All |
端口被其他进程占用 | `netstat -ano |
通过以上步骤,90% 的 Windows Docker 网络问题可被解决。如仍存在问题,可提供以下信息进一步排查:
docker version # 版本信息
docker info # 系统配置
Get-NetAdapter # 网络适配器状态