方案一:DaoCloud/public-image-mirror
该方案非常简单,只需要在镜像前缀加上前缀
docker run m.daocloud.io/docker.io/library/nginx
只是在镜像前缀加上 m.daocloud.io/ 就可以实现加速,例如想要下载 prom/prometheus 镜像只需要执行
docker run m.daocloud.io/docker.io/prom/prometheus
不同的镜像库需要替换不同的前缀,上面给出的是 docker.io 库的替换方式,下面列出一些常见库的替换前缀
| 源站 | 替换为 |
|---|---|
| cr.l5d.io | l5d.m.daocloud.io |
| docker.elastic.co | elastic.m.daocloud.io |
| docker.io | docker.m.daocloud.io |
| gcr.io | gcr.m.daocloud.io |
| ghcr.io | ghcr.m.daocloud.io |
| k8s.gcr.io | k8s-gcr.m.daocloud.io |
| registry.k8s.io | k8s.m.daocloud.io |
| mcr.microsoft.com | mcr.m.daocloud.io |
| nvcr.io | nvcr.m.daocloud.io |
| quay.io | quay.m.daocloud.io |
| registry.jujucharms.com | jujucharms.m.daocloud.io |
| rocks.canonical.com | rocks-canonical.m.daocloud.io |
由于加速的需求暴增,镜像开发者建议搭建私有镜像库的方式,避免同时使用人数过多被限流
方案二:基于 Cloudflare 的 Docker 镜像代理工具
根据开发者提供的源码,一键在cloudflare平台部署工作负载,部署成功后,平台会提供一个对应工作负载的私有域名(也可以绑定自己的域名)
假如域名为 docker.myproxy.com 则在下载 docker 镜像时使用
docker run docker.myproxy.com/prom/prometheus
也可以修改docker配置一键代理
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.fxxk.dedyn.io"] # 请替换为您自己的Worker自定义域名
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker