# public-image-mirror

源仓库 [Github](https://github.com/DaoCloud/public-image-mirror)  
Mirror 仓库 [Gitee](https://gitee.com/daocloud/public-image-mirror)  

- 白名单 & 限流 的公开信息 [#2328](https://github.com/DaoCloud/public-image-mirror/issues/2328)
- 如有疑问请咨询 [#4183](https://github.com/DaoCloud/public-image-mirror/issues/4183)

## 背景 & 目标

很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。

* 一个简洁有效的方法能够加速这些包。简洁的名称映射
* 易于添加,添加新的包,不需要去修改代码。
* 稳定可靠,更新实时。每天检查同步情况。
* 此项目仅是源镜像仓库 (Registry) 的 Mirror
  * 所有 hash(sha256) 均和源保持一致 (懒加载机制)。
  * 由于缓存的存在, 可能存在 1 小时的延迟。
  * 如超过 1 小时还未更新, 估计是国际带宽挂了。
* 对于 镜像层(blob) 会缓存在第三方对象存储上
  * 当前暂未对内容做任何检测, 计划会添加检测。

## 快速开始

```
docker run -d -P m.daocloud.io/docker.io/library/nginx
```
## 使用方法

**增加前缀** (推荐方式)。比如:

``` log
              docker.io/library/busybox
                 |
                 V
m.daocloud.io/docker.io/library/busybox
```

或者 支持的镜像仓库 的 *前缀替换* 就可以使用。比如:

``` log
           docker.io/library/busybox
             |
             V
docker.m.daocloud.io/library/busybox
```

## 单次单镜像同步

**!!!!!!!!!!!!!!!!!!!!!!!!强烈推荐!!!!!!!!!!!!!!!!!!!!!!!!**

您可以根据 [镜像同步 Issue 模板](https://github.com/DaoCloud/public-image-mirror/issues/new?labels=sync+image&template=sync-image.yml) 创建一个 Issue, 将会有机器人帮您优先主动同步指定的镜像

> 原先已经在下的镜像还是会继续走原来的, 需要重启 docker 再重新拉取才能走已经同步好的缓存过, 所以推荐先单次同步再尝试拉取
> 对于 latest 这种经常内容会发生变更的 tag 变更后会需要重新同步

## 懒加载

> 仅推荐用于小于 20MiB 的镜像
> 这条通道主要用于保持 image 是最新的, 每次拉取都会检查是否和上游保持同步


如果您看到下没有进度这是由于带宽有限只要有几人在下较大的文件就会阻塞后续的下载, 可以尝试[单次单镜像同步](#单次单镜像同步)

就算没同步也能 **直接拉取**, 初次拉取会比已经同步过的慢很多.  
当前同时使用 aliyun oss 和 huawei obs 作为存储, 已经懒加载过的内容还是会出现一次未命中的情况, 使用[单次单镜像同步](#单次单镜像同步) 将会保证同步 Image 到两个存储

## 定期同步列表 (不推荐)

已经太大了, 不再支持添加, 请使用[单次单镜像同步](#单次单镜像同步)

[mirror.txt](mirror.txt)

## 支持前缀替换的 Registry (不推荐)

推荐使用添加前缀的方式.

前缀替换的 Registry 的规则, 这是人工配置的, 有需求提 Issue.

| 源站                    | 替换为                        | 备注                                  |
| ----------------------- | ----------------------------- | ------------------------------------- |
| docker.elastic.co       | elastic.m.daocloud.io         |                                       |
| docker.io               | docker.m.daocloud.io          |                                       |
| gcr.io                  | gcr.m.daocloud.io             |                                       |
| ghcr.io                 | ghcr.m.daocloud.io            |                                       |
| k8s.gcr.io              | k8s-gcr.m.daocloud.io         | k8s.gcr.io 已被迁移到 registry.k8s.io  |
| registry.k8s.io         | k8s.m.daocloud.io             |                                       |
| mcr.microsoft.com       | mcr.m.daocloud.io             |                                       |
| nvcr.io                 | nvcr.m.daocloud.io            |                                       |
| quay.io                 | quay.m.daocloud.io            |                                       |
| registry.ollama.ai      | ollama.m.daocloud.io          | 实验内测中,[使用方法](#加速-ollama--deepseek)     |

## 最佳实践

### 加速 Kubneretes

#### 加速安装 kubeadm
``` bash
kubeadm config images pull --image-repository k8s-gcr.m.daocloud.io
```

#### 加速安装 kind

``` bash
kind create cluster --name kind --image m.daocloud.io/docker.io/kindest/node:v1.22.1
``` 

#### 加速 Containerd

* 参考 Containerd 官方文档: [hosts.md](https://github.com/containerd/containerd/blob/main/docs/hosts.md#registry-host-namespace)
* 如果您使用 kubespray 安装 containerd, 可以配置 [`containerd_registries_mirrors`](https://github.com/kubernetes-sigs/kubespray/blob/master/docs/CRI/containerd.md#containerd-config)

### 加速 Docker

添加到 `/etc/docker/daemon.json`
``` json
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io"
  ]
}
```

### 加速 Ollama & DeepSeek

#### 加速安装 Ollama

CPU:
```bash
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama docker.m.daocloud.io/ollama/ollama
```

GPU 版本:
1. 首先安装 Nvidia Container Toolkit
2. 运行以下命令启动 Ollama 容器:

```bash
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama docker.m.daocloud.io/ollama/ollama
```

更多信息请参考:
* [Ollama Docker 官方文档](https://ollama.com/blog/ollama-is-now-available-as-an-official-docker-image)

#### 加速使用 Deepseek-R1 模型(实验内测中)

注:目前 Ollama 官方源的下载速度已经很快,您也可以直接使用[官方源](https://ollama.com/library/deepseek-r1:1.5b)。

```bash
# 使用加速源
docker exec -it ollama ollama run ollama.m.daocloud.io/library/deepseek-r1:1.5b

# 或使用官方源
# docker exec -it ollama ollama run deepseek-r1:1.5b
```

## [友情链接]加速三剑客

* 镜像加速:https://github.com/DaoCloud/public-image-mirror
* 二进制文件加速:https://github.com/DaoCloud/public-binary-files-mirror
* Helm 加速:https://github.com/DaoCloud/public-helm-charts-mirror


## 贡献者

<a href="https://github.com/DaoCloud/public-image-mirror/graphs/contributors">
  <img src="https://contrib.rocks/image?repo=DaoCloud/public-image-mirror" />
</a>

Made with [contrib.rocks](https://contrib.rocks).