Skip to content

使用 ttl.sh 替换阿里 Docker 镜像仓库

我们在 100+ 台服务器通过 docker 发布和更新项目,使用 aliyun 提供的免费版镜像仓库时,碰到 toomanyrequests: too many requests 错误,尽管通过重试机制最终可以成功,但 100+ 台服务器,完成一次更新要十几分钟;

在网上搜寻私有、免费镜像仓库时,找到了 ttl.sh,基于 Cloudflare 服务器,基本等于不限量限速,速度快,无需注册账号,简单的用镜像名来处理保密问题,一天后自动删除上传的镜像;

这对于我们这种不用 Docker 管理版本,只用它分发升级的场景,非常好用,安利一下。

食用说明

关于使用,官网有介绍:

  1. 通过 uuidgen | tr "[:upper:]" "[:lower:]" 命令,生成一串随机的 uuid(例如 05237572-5693-4261-a26a-6469a60f0a36)
  2. 执行 docker build -t ttl.sh/your-project-name-05237572-5693-4261-a26a-6469a60f0a36:1d . --push 构建和推送镜像
    • your-project-name 是你的项目名
    • 1d 是保存期限,这里是 1 天的意思,也可以写 1h 为一小时,5m 为五分钟,依此类推,最长 1 天
  3. 在目标服务器执行 docker pull your-project-name-05237572-5693-4261-a26a-6469a60f0a36:1d 拉取镜像使用即可
  4. 这样呢,你通过项目名来便于区分和管理镜像,通过 uuid 防止其他人猜到项目名而下载到镜像,且 1 天后自动删除,基本就不用担心被别人下载到镜像或恶意覆盖了。

长期保存

如果想长期保存镜像,可以搞个定时任务,快到 24 小时,重新 push 一下就好(嗯我们更新比较快,理论上可行,没测过这个...)。