2024年6月初,由于某些原因,docker无法正常pull镜像,这对于依赖Docker环境的我来说,确实有点麻烦的。对于别人的镜像站点,能用多久是个问题,如果作者不维护,这个镜像站点就无法使用,就需要重新找新的站点。介于此,思考许久,不如自己搭建一个,给自己的目标就是:免费、稳定就足够了,以下是一种解决方案:

解决方案:

原理:使用cloudflare代理Docker镜像站点。

cloudflare官网:https://dash.cloudflare.com/

开源仓库:https://github.com/cmliu/CF-Workers-docker.io

步骤:

  1. 注册登录cloudflare,选择Workers 和 Pages,这两个部署方式都是可以的;

  2. Pages方式:连接github仓库,选择github仓库(Fork过来的开源仓库),直接开始默认设置就可以

  3. Workers :复制 _worker.js 代码,保存并部署即可

  4. 修改文件 /etc/docker/daemon.json(如果不存在则创建)

1
2
3
4
5
6
7
8
9
10
11
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

常见问题:

  1. 部署后会一定时间的延迟,需要等一会才可以进行访问;

  2. 部署测试第一点是看域名能不能正常访问,第二是镜像名称前面加域名能不能正常pull,比如格式:

    域名/镜像名

1
docker pull cf-workers-docker-io-XXX.XXX.dev/mongo
  1. 修改镜像后一定要重启一下docker;

  2. 注意格式引号,一定要英文状态下的引号;否则重启docker 的时候会报错;

  3. 最好不要公开自己的域名,因为cloudflare是有免费的请求次数限制;

  4. 如果用一段时间后无法访问,这是因为cloudflare容易被墙,最好的办法是自定义域名