链氪巴士
  1. 首页
  2. 站点导航
  3. 文章
  4. 快讯
  5. 软件
  6. 书刊
  7. 关于
Featured image of post 自建 Docker 镜像代理彻底解决 Docker pull 失败问题

自建 Docker 镜像代理彻底解决 Docker pull 失败问题

这是一款基于 Cloudflare Workers 的 Docker 仓库镜像代理工具。它能中转对 Docker 官方镜像仓库的请求,有效解决访问限制并实现加速访问。本文详细介绍了其部署流程,包括在 Cloudflare 平台的操作步骤,还阐述了诸如路由表设置、响应构造等功能..

Docker仓库镜像代理工具

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

Demo

链氪镜像:https://docker.linkedbus.com

部署方式

如何使用?

例如您的 Workers 项目域名(或自定义域名)为:https://docker.linkedbus.com ;

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

docker pull docker.linkedbus.com/stilleshan/frpc:latest
docker pull docker.linkedbus.com/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.linkedbus.com"]  # 请替换为您自己的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 = "docker.linkedbus.com"

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

[[registry.mirror]]
location = "docker.linkedbus.com"

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

[[registry.mirror]]
location = "docker.linkedbus.com"

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

[[registry.mirror]]
location = "docker.linkedbus.com"

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

[[registry.mirror]]
location = "docker.linkedbus.com"

3.3 使用

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

crictl pull registry.k8s.io/kube-proxy:v1.28.4 
docker pull nginx:1.21
最后更新于 2024年12月13日
使用 Hugo 构建
主题 Stack,作者 Jimmy