我的远程实习(四)| Ailln叫我docker部署项目,我顺便填了以前的坑

前言

大家好啊~ , 好久不见 , 又到周末了😏; 趁着周末时间总结一下这个星期的实习吧 : 这一周很忙 , 因为要上线项目 , 所以比较急😫 , 但是周末了 , 应该好好休息😡 于是 , 我闲着来给大家闭坑了!!!

这周,算法工程师Ailln安排了任务给我 , 叫我部署新鲜出炉的Ai项目 ,提供了多种可选方案

  • 方案 A(服务器构建/服务器运行) 是最简单的方法,但是需要服务器有较好的性能,否则构建镜像会非常慢。
  • 方案 B(本地构建/推送远程仓库/服务器运行) 是最复杂的方法,但是可以解决服务器性能较差的问题,以及多人协作起来更加方便。
  • 方案 C(本地构建/手动上传/服务器运行) 是最通用的方法,也可以解决服务器性能较差的问题,但是需要手动上传镜像。

在服务器构建是最简单的方案 , 而在本地构建则需要你电脑上有docker环境 , 而我的电脑是windows , 安装docker有点靠运气(因为相比linux , 太坑了),还好我之前已经安装好了🤡 , 顶着C盘13G的压力硬是没有把docker环境(WSL、unbutu、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. 配置国内镜像加速(最有效)

步骤

  1. 获取镜像加速地址
    • 阿里云镜像加速器(需注册获取专属地址
    • 其他公共镜像源:[https://docker.mirrors.ustc.edu.cn](https://docker.mirrors.ustc.edu.cn)(中科大)
  2. 配置镜像源
    • 通过 Docker Desktop 界面配置
  3. 右键任务栏 Docker 图标 → SettingsDocker Engine
  4. 在配置文件中添加 registry-mirrors 项: { "registry-mirrors": [ "https://your-aliyun-mirror.mirror.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn" ] }
  5. 点击 Apply & Restart 保存并重启 Docker
    • 直接修改配置文件 (路径:%USERPROFILE%\.docker\daemon.json
  6. 验证配置
powershell 复制代码
docker info | Select-String "Mirror"  # 查看生效的镜像源
2. 修复 DNS 解析问题

操作步骤

  1. 修改 DNS 服务器
    • 打开 控制面板网络和共享中心 → 当前网络连接 → 属性IPv4 属性
    • 手动设置 DNS:
plain 复制代码
首选 DNS:8.8.8.8(Google)
备用 DNS:114.114.114.114(国内公共DNS)
diff 复制代码
- 保存后执行命令刷新缓存:
powershell 复制代码
ipconfig /flushdns
  1. 检查域名解析
3. 处理代理冲突

场景:企业网络或使用 VPN 时的代理配置

  • 为 Docker 配置代理
    1. 打开 Docker Desktop → SettingsResourcesProxies
    2. 填写代理信息:
plain 复制代码
HTTP Proxy: http://proxy.example.com:8080
HTTPS Proxy: http://proxy.example.com:8080
No Proxy: localhost,127.0.0.1,.internal
markdown 复制代码
3. 重启 Docker
  • 系统级代理排除
    • 在系统代理设置中排除 Docker 相关域名:
plain 复制代码
registry-1.docker.io, auth.docker.io
4. 解决 WSL2 网络问题

症状:Windows 宿主机正常但 WSL2 内无法联网

  • 重置 WSL2 网络
powershell 复制代码
wsl --shutdown        # 关闭所有WSL实例
netsh winsock reset   # 重置网络堆栈(需管理员权限)
netsh int ip reset    # 重置IP配置

重启电脑后再次启动 Docker

  • 启用 WSL2 桥接模式
    创建 %USERPROFILE%\.wslconfig 文件并添加:
properties 复制代码
[wsl2]
networkingMode=bridged  # 使用宿主机网络模式

5. 系统时间与证书同步
  • 校准时间
    1. 右键任务栏时间 → 调整日期/时间
    2. 开启 自动设置时间自动设置时区
    3. 手动同步:
powershell 复制代码
w32tm /resync  # 强制时间同步(需管理员权限)
  • 更新根证书
    下载 最新根证书包,替换 %ProgramFiles%\Docker\Docker\resources\certs.pem

二、进阶诊断步骤

1. 网络连通性测试
powershell 复制代码
# 测试HTTPS连接(需安装curl)
curl -v https://registry-1.docker.io/v2/  

# 测试端口连通性
Test-NetConnection registry-1.docker.io -Port 443
2. 防火墙/杀毒软件排查
  • 暂时关闭防火墙
powershell 复制代码
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
  • 杀毒软件白名单 :将 Docker 相关进程(如 dockerd.exe, com.docker.backend.exe)加入例外

三、备用解决方案

1. 离线安装镜像
  • 在可联网机器导出镜像
powershell 复制代码
docker pull alpine:latest
docker save -o alpine.tar alpine:latest
  • 在目标机器导入
powershell 复制代码
docker load -i alpine.tar
2. 使用 Docker 内置诊断工具
powershell 复制代码
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 网络问题可被解决。如仍存在问题,可提供以下信息进一步排查:

powershell 复制代码
docker version        # 版本信息
docker info           # 系统配置
Get-NetAdapter        # 网络适配器状态
相关推荐
恋猫de小郭4 小时前
Flutter Zero 是什么?它的出现有什么意义?为什么你需要了解下?
android·前端·flutter
崔庆才丨静觅11 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby606111 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了11 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅12 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅12 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅12 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment12 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
金刚猿12 小时前
01_虚拟机中间件部署_root 用户安装 docker 容器,配置非root用户权限
docker·中间件·容器
崔庆才丨静觅13 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端