自建 Docker 镜像摆脱 Docker pull 失败困境

CF-Workers-docker.io:Docker仓库镜像代理工具。这个项目是一个基于 Cloudflare Workers 的 Docker 镜像代理工具。它能够中转对 Docker 官方镜像仓库的请求,解决一些访问限制和加速访问的问题。

第三方镜像列表

DockerHub 国内镜像源 / 加速列表(0913 更新)

CF-Workers-docker.io:Docker 仓库镜像代理工具

这个项目是一个基于 Cloudflare Workers 的 Docker 镜像代理工具。它能够中转对 Docker 官方镜像仓库的请求,解决一些访问限制和加速访问的问题。

部署方式

  • Workers  部署:复制  worker.js  代码,保存并部署 即可
  • Pages  部署:Fork  后 连接 GitHub  一键部署即可

如何使用?

例如您的 Workers 项目域名为:docker.xuanyuan.me ;

1. 官方镜像路径前面加域名

docker pull docker.xuanyuan.me/stilleshan/frpc:latest

docker pull docker.xuanyuan.me/library/nginx:stable-alpine3.19-perl

2. 一键设置镜像加速

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

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.xuanyuan.me"]  # 请替换为您自己的 Worker 自定义域名
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

3. 配置常见仓库的镜像加速

3.1 配置

Containerd 较简单,它支持任意  registry  的  mirror,只需要修改配置文件  /etc/containerd/config.toml,添加如下的配置:

    [plugins."io.containerd.grpc.v1.cri".registry]
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
          endpoint = ["https://xxxx.xx.com"]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]
          endpoint = ["https://xxxx.xx.com"]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"]
          endpoint = ["https://xxxx.xx.com"]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."ghcr.io"]
          endpoint = ["https://xxxx.xx.com"]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."quay.io"]
          endpoint = ["https://xxxx.xx.com"]

Podman  同样支持任意  registry  的  mirror,修改配置文件  /etc/containers/registries.conf,添加配置:

unqualified-search-registries = ['docker.io', 'k8s.gcr.io', 'gcr.io', 'ghcr.io', 'quay.io']

[[registry]]
prefix = "docker.io"
insecure = true
location = "registry-1.docker.io"

[[registry.mirror]]
location = "https://xxxx.onrender.com"

[[registry]]
prefix = "k8s.gcr.io"
insecure = true
location = "k8s.gcr.io"

[[registry.mirror]]
location = "https://xxxx.onrender.com"

[[registry]]
prefix = "gcr.io"
insecure = true
location = "gcr.io"

[[registry.mirror]]
location = "https://xxxx.onrender.com"

[[registry]]
prefix = "ghcr.io"
insecure = true
location = "ghcr.io"

[[registry.mirror]]
location = "https://xxxx.onrender.com"

[[registry]]
prefix = "quay.io"
insecure = true
location = "quay.io"

[[registry.mirror]]
location = "https://xxxx.onrender.com"

3.3 使用

对于以上配置,k8s 在使用的时候,就可以直接 pull 外部无法 pull 的镜像了 手动可以直接 pull  配置了mirror 的仓库

crictl pull registry.k8s.io/kube-proxy:v1.28.4 

docker pull nginx:1.21

变量说明

变量名示例必填备注
URL302https://t.me/CMLiussss❌主页 302 跳转
URLhttps://www.baidu.com/❌主页伪装 (设为nginx 则伪装为 nginx 默认页面)
UAnetcraft❌支持多元素, 元素之间使用空格或换行作间隔
使用 Hugo 构建
主题 Stack,作者 Jimmy