我真是被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 的镜像,然后我再拉阿里云拉取的镜像来加速。
用脚本的话应该还是很方便的,搜到了不少类似的方案。


