前言
CNB 作为一款强的一批的云原生开发平台,在上线之初就提供了许多开发者友好的功能,其中一点当属强大的加速网络。
以此为契机,我写了第一个基于 CNB 的 镜像加速方案,受限于 CNB 的环境回收机制,这个方案只适合临时使用,较为灵活。
然后发现了 xiaofei 大佬 写的
项目介绍
CNB Docker Mirror 是一个基于 CNB 的 Docker 镜像加速工具,提供本地镜像加速功能。
功能特性
镜像加速:在本地启动连接到 CNB 环境的 Docker 镜像加速服务,然后通过配置 Docker 客户端实现镜像加速下载。
自动重连:镜像加速服务具备自动心跳保活和断线重连机制。
自动启动:使用 docker 运行,自动启动加速服务并保持后台运行
使用教程
1. 创建 CNB 账号
打开 登录
,使用微信扫码创建账号
2. 创建组织
根据需要填写组织名创建组织
3. 创建仓库
选择仓库归属组织,填写仓库名称创建仓库
如此处能得到仓库:Anyexyz/runtime
,记住该 REPO
4. 创建访问令牌
访问
授权范围需要勾选
repo-cnb-trigger:rw
repo-cnb-detail:r
如图
其余权限保持默认,点击 创建
。
你会得到这样一个东西
令牌名:cdm
Git Username:cnb
Token:1S1b53qHRtGjvzmD5hNEQFAwziD
记住此处的 Token
5. 创建 docker-composer.yml 文件
在合适的位置创建 docker-composer.yml
文件
services:
cdm:
container_name: cdm
image: docker.cnb.cool/anyexyz/cdm/docker-mirror:latest-linux-amd64
ports:
- "50000:50000"
environment:
- CNB_TOKEN=1S1b53qHRtGjvzmD5hNEQFAwziD # 将这里的 1S1b53qHRtGjvzmD5hNEQFAwziD 换成你上面获取到的token
- CNB_REPO=Anyexyz/runtime # 将这里的 Anyexyz/runtime 换成你的 REPO
restart: unless-stopped
注意:请确保同时设置CNB_TOKEN和CNB_REPO环境变量,否则程序将无法正常运行。
6. 启动!
docker-compose up -d
7. 配置 Docker 客户端
编辑 Docker 客户端配置文件(通常为 /etc/docker/daemon.json
),添加以下内容:
{
"insecure-registries": [
"0.0.0.0:50000"
],
"registry-mirrors": [
"http://0.0.0.0:50000"
]
}
重启 docker 服务
sudo systemctl daemon-reload
sudo systemctl restart docker
特性说明:镜像加速服务启动后会自动与 CNB 建立心跳连接以保持会话。当检测到 CNB 断开(CNB 会在 16 小时后强制关闭环境)时,服务会自动重新创建加速环境并重启加速服务。
效果一览
启动
镜像拉取
速度一览
注意事项
确保仓库为公开访问
Token 请妥善保管,不要泄露
建议使用独立组织管理镜像仓库,便于权限管理
问题反馈
如有问题或建议,请提交 Issue,或在本文下方评论。
致谢
感谢 CNB 提供的强大功能和稳定环境,使得这个工具得以实现。
感谢 xiaofei 大佬 的 原项目 提供思路