快速搭建自己的多平台镜像站,你学会了吗?

开发 前端
本文将介绍一种工具——crproxy,它是一个Docker镜像代理服务。通过部署此服务,我们无需手动同步镜像到私有仓库,只需将代理服务部署在网络畅通的服务器上,即可通过该服务器拉取各大镜像仓库的镜像。

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

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.io

l5d.kubesre.xyz

docker.elastic.co

elastic.kubesre.xyz

docker.io

docker.kubesre.xyz

gcr.io

gcr.kubesre.xyz

ghcr.io

ghcr.kubesre.xyz

k8s.gcr.io

k8s-gcr.kubesre.xyz

registry.k8s.io

k8s.kubesre.xyz

mcr.microsoft.com

mcr.kubesre.xyz

nvcr.io

nvcr.kubesre.xyz

quay.io

quay.kubesre.xyz

registry.jujucharms.com

jujucharms.kubesre.xyz

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

背景介绍

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

crproxy支持的镜像仓库

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

镜像仓库地址

归属

cr.l5d.io

Lyft

docker.elastic.co

Elastic

docker.io

Docker, Inc.

gcr.io

Google Cloud

ghcr.io

GitHub

k8s.gcr.io

Kubernetes

registry.k8s.io

Kubernetes

mcr.microsoft.com

Microsoft Container Registry

nvcr.io

NVIDIA

quay.io

Quay.io (CoreOS)

registry.jujucharms.com

Juju 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
责任编辑:武晓燕 来源: 云原生运维圈
相关推荐

2023-07-30 22:29:51

BDDMockitoAssert测试

2023-06-12 07:41:16

dockerspark集群

2023-06-27 08:00:35

2022-12-08 19:27:38

2024-01-08 07:29:57

多集群模型Istio网络拓扑

2023-05-24 08:14:55

2022-07-08 09:27:48

CSSIFC模型

2024-01-19 08:25:38

死锁Java通信

2024-02-04 00:00:00

Effect数据组件

2023-01-10 08:43:15

定义DDD架构

2023-07-26 13:11:21

ChatGPT平台工具

2024-02-02 11:03:11

React数据Ref

2024-01-02 12:05:26

Java并发编程

2023-08-01 12:51:18

WebGPT机器学习模型

2023-08-08 08:34:47

漏洞环境获取方法

2022-09-08 11:44:17

EW汇编器连接定位器

2023-01-30 09:01:54

图表指南图形化

2024-07-31 08:39:45

Git命令暂存区

2024-05-06 00:00:00

InnoDBView隔离

2023-12-12 08:02:10

点赞
收藏

51CTO技术栈公众号