我的远程实习(四)| 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        # 网络适配器状态
相关推荐
剪刀石头布啊13 分钟前
浏览器进程与事件循环
前端·浏览器
剪刀石头布啊14 分钟前
浏览器渲染原理
前端·浏览器
未完成的歌~37 分钟前
云安全之k8s未授权漏洞总结
云原生·容器·kubernetes
日记成书40 分钟前
【HTML 基础教程】HTML 表格
前端·html
木木黄木木44 分钟前
HTML5贪吃蛇游戏开发经验分享
前端·html·html5
无名之逆1 小时前
hyperlane:Rust HTTP 服务器开发的不二之选
服务器·开发语言·前端·后端·安全·http·rust
李鸿耀1 小时前
前端包管理工具演进史:从 npm 到 pnpm 的技术革新
前端·面试
麓殇⊙1 小时前
前端基础知识汇总
前端
MariaH1 小时前
邂逅jQuery库
前端
Jenlybein1 小时前
学完 Vue3 记不牢?快来看这篇精炼Vue3笔记复习一下 [ Route 篇 ]
前端·vue.js