快速搭建自己的多平台镜像站

文摘   2024-06-20 04:49   挪威  

公益镜像仓库

由于许多公开镜像站已不再可用,我们建立了一个公益镜像仓库供大家下载使用。然而,由于镜像仓库的带宽有限,建议用户自行搭建。以下是相关资源和使用方法:

Github仓库地址?https://github.com/kubesre/docker-registry-mirrors

如果觉得有帮助,请在GitHub上点个⭐️以示鼓励。

当前 IP 限流 20次/分钟

使用方法

k8s.gcr.io/coredns/coredns => kubesre.xyz/k8s.gcr.io/coredns/coredns

或者通过支持的镜像仓库前缀替换即可使用,例如:

k8s.gcr.io/coredns/coredns => k8s-gcr.kubesre.xyz/coredns/coredns

支持前缀替换的 Registry

以下是前缀替换的 Registry 规则,如有需求请提 Issue:

Github仓库地址?https://github.com/kubesre/docker-registry-mirrors

如果觉得有帮助,请在GitHub上点个⭐️以示鼓励。

替换规则表

原始仓库地址替换为
cr.l5d.iol5d.kubesre.xyz
docker.elastic.coelastic.kubesre.xyz
docker.iodocker.kubesre.xyz
gcr.iogcr.kubesre.xyz
ghcr.ioghcr.kubesre.xyz
k8s.gcr.iok8s-gcr.kubesre.xyz
registry.k8s.iok8s.kubesre.xyz
mcr.microsoft.commcr.kubesre.xyz
nvcr.ionvcr.kubesre.xyz
quay.ioquay.kubesre.xyz
registry.jujucharms.comjujucharms.kubesre.xyz

详细说明请参考:?https://github.com/kubesre/docker-registry-mirrors

背景介绍

随着一些知名公开镜像站的关闭,国内用户在使用Docker时面临更多困难。特别是对于企业而言,搭建一个稳定可靠的自用镜像站显得尤为重要。本文将介绍一种工具——crproxy,它是一个Docker镜像代理服务。通过部署此服务,我们无需手动同步镜像到私有仓库,只需将代理服务部署在网络畅通的服务器上,即可通过该服务器拉取各大镜像仓库的镜像。

crproxy支持的镜像仓库

crproxy实际上支持任何镜像仓库。以下是一些常见的仓库列表:

镜像仓库地址归属
cr.l5d.ioLyft
docker.elastic.coElastic
docker.ioDocker, Inc.
gcr.ioGoogle Cloud
ghcr.ioGitHub
k8s.gcr.ioKubernetes
registry.k8s.ioKubernetes
mcr.microsoft.comMicrosoft Container Registry
nvcr.ioNVIDIA
quay.ioQuay.io (CoreOS)
registry.jujucharms.comJuju Charms

部署指南

部署条件:

  • 一台网络畅通的服务器
  • 准备一个域名(无需备案)并做好 DNS 解析:添加两条解析记录 @ 记录 和 * 记录到准备好的服务器的 IP

建议选择xyz结尾的域名,首年最低7元。如果使用二级域名,例如cr.kubesre.xyz,可将cr和*.cr解析到服务器IP。

部署步骤:

# 1. 拉取代码
$ git clone https://github.com/wzshiming/crproxy.git
$ cd crproxy/examples/default

#
 2. 修改网关域名
使用vim编辑start.sh文件,将第五行的gateway变量值修改为你自己设定的域名。

#
 3. 启动服务
$ ./start.sh

#
 4. 拉取镜像示例
如果域名为kubesre.xyz,可以通过添加前缀的方式拉取镜像
$ docker pull kubesre.xyz/k8s.gcr.io/coredns/coredns:v1.8.6

#
 5. 设置别名
如果需要使用前缀替换方式拉取镜像,需要执行setup-alias.sh脚本,并为别名申请证书。

#
 6. 重启服务
$ ./reload.sh

注意事项

  • 当前的部署形式适用于小规模使用场景。对于大规模使用,项目中已有相关代码,但尚未有文档描述。
  • 文章中提到的仓库地址kubesre.xyz仅供演示,不保证其稳定性和有效性。

添加常用镜像仓库别名

设置环境变量:

GETEWAY=kubesre.xyz  # 替换成自己的域名

添加别名:

./setup-alias.sh l5d.${GETEWAY} cr.l5d.io ${GETEWAY}
./setup-alias.sh elastic.${GETEWAY} docker.elastic.co ${GETEWAY}
./setup-alias.sh docker.${GETEWAY} docker.io ${GETEWAY}
./setup-alias.sh gcr.${GETEWAY} gcr.io ${GETEWAY}
./setup-alias.sh ghcr.${GETEWAY} ghcr.io ${GETEWAY}
./setup-alias.sh k8s-gcr.${GETEWAY} k8s.gcr.io ${GETEWAY}
./setup-alias.sh k8s.${GETEWAY} registry.k8s.io ${GETEWAY}
./setup-alias.sh mcr.${GETEWAY} mcr.microsoft.com ${GETEWAY}
./setup-alias.sh nvcr.${GETEWAY} nvcr.io ${GETEWAY}
./setup-alias.sh quay.${GETEWAY} quay.io ${GETEWAY}
./setup-alias.sh jujucharms.${GETEWAY} registry.jujucharms.com ${GETEWAY}
./setup-alias.sh rocks-canonical.${GETEWAY} rocks.canonical.com ${GETEWAY}

申请别名证书:

./update-tls.sh gcr.${GETEWAY}
./update-tls.sh ghcr.${GETEWAY}
./update-tls.sh k8s-gcr.${GETEWAY}
./update-tls.sh k8s.${GETEWAY}
./update-tls.sh mcr.${GETEWAY}
./update-tls.sh nvcr.${GETEWAY}
./update-tls.sh quay.${GETEWAY}
./update-tls.sh jujucharms.${GETEWAY}
./update-tls.sh rocks-canonical.${GETEWAY}

最后重启服务:

./reload.sh

总结

以上是搭建个人Docker镜像站的完整流程。如果有任何疑问或建议,欢迎在评论区留言交流。同时,也欢迎大家分享自己使用的镜像站。

最后推荐一个演示的docker镜像站:?https://github.com/kubesre/docker-registry-mirrors

如果觉得有帮助,请在GitHub上点个⭐️以示鼓励。

云原生SRE
懂点K8S的SRE,关注云原生、DevOps、AI&ChatGPT等技术热点
 最新文章