Docker镜像拉取和构建太折磨人了,分享下我的解决方案。

我真是被Docker网络折磨的受不了了,代理明明可以跑满500MBPS,但在拉取和构建镜像的时候却慢的要死,快了能有1-2MB/S 慢的就只有100kb/s左右了。

因此我部署了 Caddy 反代 Docker和私有仓库,并编写了一个脚本,实现以下功能:

一、命令转换 (用于拉取或预热)

真是邪门,我在两台电脑,三台VPS上更改daemon.json为我的反代域名,都无法发挥作用,还是死犟的从官方站拉取。gemini一边帮我看日志一边直呼灵异事件,我是真的服。

  • 命令转换: 于是我只好使用一次性镜像加速命令docker pull docker.mydomain.com/library/app:latest,脚本的这个功能就是做命令转换。好处可能是不用每台机器都单独配置了?

  • 预热镜像: 在第一次拉取之前,提前在VPS上拉取一次,建立缓存,这样本地再拉取就已经是缓存好了的。

二、远程构建并推送 (开发时可能比较实用)

  • 这是利用vps的远程私有仓库,将代码打包上传到VPS上构建,利用VPS的高速网络快速构建,然后推送给私有仓库。

  • 选择项目Dockerfile所在的文件夹即可,点击。

  • 接着自动生成高速拉取的指令,复制执行即可,非常方便。

三、Dockerfile 批量预热(我是用不到这个功能,我下载别的依赖一样很慢,但万一有人能用到呢?)

  • 如果想在本地构建的话,可以先用这个批量预热以下基础镜像。

选择你的Dockflie文件即可,会自动预热基础镜像,并根据你的dockerfile生成一个管道命令。

  • 注意:这无法解决构建时依赖下载缓慢的问题,除非改用国内源,否则还是推荐使用云端构建的方案。

关于部署反代与私有仓库

可以将这篇文章发给AI获取详细步骤。


最终的效果

无论是构建还是拉取,都能达到几乎跑满我的代理(废话,流量都没有出VPS),对于我当前的使用场景是完全满足了。


另外还有一套 使用 GitHub Actions 云端构建并推送阿里云 的方法。

我因为嫌每个项目都要配置一次密钥太麻烦(虽然也可以让 AI 来做),因此只跑通了一次就转向vps反代docker了。

理论上讲可以通过 阿里云拉取 DockerHub 的镜像,然后我再拉阿里云拉取的镜像来加速。
用脚本的话应该还是很方便的,搜到了不少类似的方案。

22 个赞

感谢分享

1 个赞

很有意义的工作!

试试我写的,专门对拉取速度进行优化过的,我在cn2机器上部署,然后国内拉取镜像就跟没墙一样。拉192MB的nginx镜像只需15秒,这台腾讯云机器带宽太小了,不然能更快

5 个赞

感谢佬的分享,star送上 :bili_066:

前几天在L站收藏的网站,不知道对你有用否,国内Docker镜像站的监控

3 个赞

谢谢佬友,很有意义的工作,现在 docker 镜像拉取确实是大问题。

基本都是全局模式拉取,速度感觉还行啊

感谢分享,star了,有空学习一下。

佬,我人傻了,我明白怎么回事了,问题出在代理链上,我买的住宅代理好像限速了docker流量,才出现我说100kb/s的情况,之前我都从来没想过这个,佬友一说我才突然想起来,xray放行geosite:docker后就是满速拉取。
完了,我成小丑了。
这也解释了为什么vps上拉取就是满速,代理拉取就是慢速了。
怪不得别的代理连这台vps下载一样慢,原因是它也做了代理链,连得同一家家宽。
9b11252eb3aa441b6154cb5d08016a4d584182be

2 个赞

感谢佬友支持,只是我现在成小丑了 :sob:

感谢佬的鼓励 :sob:

感谢鼓励

都不错,收藏了。

感谢佬友分享

感谢大佬分享,爱你