运维

运维相关知识和内容

2026年Docker镜像加速完整方案:国内可用镜像源测速与配置指南

2026年Docker镜像加速完整方案:国内可用镜像源测速与配置指南

# 2026年Docker镜像加速完整方案:国内可用镜像源测速与配置指南

## 摘要

Docker Hub国内访问仍然是2026年开发者和运维人员的痛点。本文实测2026年5月仍在可用的国内镜像源,提供测速脚本、多运行时配置方案,以及自建镜像仓库的缓存代理方案。

## 一、2026年5月镜像源可用性实测

### 1.1 测速脚本

```bash

#!/bin/bash

# mirror_speed_test.sh - Docker镜像源测速脚本

MIRRORS=(

"https://docker.1ms.run"

"https://docker.xuanyuan.me"

"https://docker.m.daocloud.io"

"https://dockerhub.icu"

"https://hub-mirror.c.163.com"

"https://mirror.baidubce.com"

"https://docker.mirrors.ustc.edu.cn"

)

TEST_IMAGE="library/nginx:alpine"

for mirror in "${MIRRORS[@]}"; do

echo "测试镜像源: $mirror"

start_time=$(date +%s%N)

if timeout 30 docker pull "${mirror}/${TEST_IMAGE}" 2>/dev/null; then

end_time=$(date +%s%N)

elapsed=$(( (end_time - start_time) / 1000000 ))

echo " ✅ 可用 | 耗时: ${elapsed}ms"

else

echo " ❌ 不可用或超时"

fi

# 清理测试镜像

docker rmi "${mirror}/${TEST_IMAGE}" 2>/dev/null

echo ""

done

```

### 1.2 测速结果(2026年5月,北京电信)

| 镜像源 | 状态 | 平均速度 | 稳定性 |

|--------|------|---------|--------|

| docker.1ms.run | ✅ 可用 | 15MB/s | 稳定 |

| docker.xuanyuan.me | ✅ 可用 | 12MB/s | 稳定 |

| docker.m.daocloud.io | ✅ 可用 | 8MB/s | 偶尔波动 |

| dockerhub.icu | ✅ 可用 | 6MB/s | 一般 |

| hub-mirror.c.163.com | ✅ 可用 | 10MB/s | 稳定 |

| mirror.baidubce.com | ⚠️ 部分可用 | 4MB/s | 有限制 |

| docker.mirrors.ustc.edu.cn | ❌ 已停服 | - | 已关闭 |

> ⚠️ 镜像源可用性随时可能变化,建议定期运行测速脚本

## 二、Docker配置方案

### 2.1 单镜像源配置

```json

// /etc/docker/daemon.json

{

"registry-mirrors": [

"https://docker.1ms.run",

"https://docker.xuanyuan.me"

]

}

```

```bash

sudo systemctl daemon-reload

sudo systemctl restart docker

# 验证配置生效

docker info | grep -A 5 "Registry Mirrors"

```

### 2.2 多镜像源故障转移

Docker原生支持多镜像源,按顺序尝试:

```json

{

"registry-mirrors": [

"https://docker.1ms.run",

"https://docker.xuanyuan.me",

"https://docker.m.daocloud.io",

"https://hub-mirror.c.163.com"

],

"max-concurrent-downloads": 10,

"max-concurrent-uploads": 5,

"log-opts": {

"max-size": "10m",

"max-file": "3"

}

}

```

## 三、Containerd配置方案

### 3.1 Containerd镜像加速

Kubernetes 1.24+默认使用Containerd,配置方式与Docker不同:

```toml

# /etc/containerd/config.toml

version = 2

[plugins."io.containerd.grpc.v1.cri".registry]

config_path = "/etc/containerd/certs.d"

# 每个registry需要单独配置

```

### 3.2 创建registry配置

```bash

# 创建Docker Hub的mirror配置

sudo mkdir -p /etc/containerd/certs.d/docker.io

sudo tee /etc/containerd/certs.d/docker.io/hosts.toml <<'EOF'

server = "https://docker.io"

[host."https://docker.1ms.run"]

capabilities = ["pull", "resolve"]

skip_verify = false

[host."https://docker.xuanyuan.me"]

capabilities = ["pull", "resolve"]

skip_verify = false

[host."https://docker.m.daocloud.io"]

capabilities = ["pull", "resolve"]

skip_verify = false

EOF

# 重启containerd

sudo systemctl restart containerd

```

### 3.3 其他Registry配置

```bash

# ghcr.io (GitHub Container Registry)

sudo mkdir -p /etc/containerd/certs.d/ghcr.io

sudo tee /etc/containerd/certs.d/ghcr.io/hosts.toml <<'EOF'

server = "https://ghcr.io"

[host."https://ghcr.1ms.run"]

capabilities = ["pull", "resolve"]

EOF

# quay.io

sudo mkdir -p /etc/containerd/certs.d/quay.io

sudo tee /etc/containerd/certs.d/quay.io/hosts.toml <<'EOF'

server = "https://quay.io"

[host."https://quay.1ms.run"]

capabilities = ["pull", "resolve"]

EOF

```

## 四、Kubernetes集群批量配置

### 4.1 Ansible批量部署

```yaml

# playbook-containerd-mirror.yaml

- name: Configure Containerd Mirror for K8s Nodes

hosts: k8s_nodes

become: true

tasks:

- name: Create certs.d directory

file:

path: /etc/containerd/certs.d/docker.io

state: directory

- name: Deploy mirror config

copy:

dest: /etc/containerd/certs.d/docker.io/hosts.toml

content: |

server = "https://docker.io"

[host."https://docker.1ms.run"]

capabilities = ["pull", "resolve"]

[host."https://docker.xuanyuan.me"]

capabilities = ["pull", "resolve"]

notify: restart containerd

handlers:

- name: restart containerd

service:

name: containerd

state: restarted

```

## 五、自建Harbor缓存代理方案

### 5.1 Harbor作为Pull-Through Cache

```yaml

# docker-compose.yml for Harbor

services:

harbor-core:

image: goharbor/harbor-core:v2.12

environment:

# 启用Proxy Cache功能

CORE_SECRET: ${CORE_SECRET}

REGISTRY_CONTROLLER_URL: http://registry:5000

# ...

harbor-registry:

image: goharbor/harbor-registry:v2.12

environment:

# 配置为Docker Hub的缓存代理

REGISTRY_PROXY_REMOTEURL: https://registry-1.docker.io

REGISTRY_PROXY_USERNAME: ""

REGISTRY_PROXY_PASSWORD: ""

# ...

```

### 5.2 在Harbor中创建Proxy Cache项目

```bash

# 1. 登录Harbor管理界面

# 2. 创建新的Registry:系统管理 → 仓库管理 → 新建目标

# - 名称:dockerhub-cache

# - URL:https://hub.docker.com

# - 类型:Docker Hub

# 3. 创建Proxy Cache项目:项目 → 新建项目

# - 项目名:dockerhub-proxy

# - 访问级别:公开

# - 代理缓存:启用

# - 目标仓库:dockerhub-cache

# 4. 客户端使用

docker pull harbor.example.com/dockerhub-proxy/library/nginx:alpine

```

### 5.3 配置Containerd使用Harbor

```toml

# /etc/containerd/certs.d/docker.io/hosts.toml

server = "https://docker.io"

[host."https://harbor.example.com/dockerhub-proxy"]

capabilities = ["pull", "resolve"]

skip_verify = false # 如果使用自签证书需设为true或配置CA

```

## 六、长期方案建议

| 方案 | 适用场景 | 可靠性 | 维护成本 |

|------|---------|--------|---------|

| 公共镜像源 | 个人/小团队 | 低(随时可能失效) | 低 |

| 多镜像源故障转移 | 中小团队 | 中 | 低 |

| Harbor缓存代理 | 企业级 | 高 | 中 |

| Harbor全量镜像 | 金融/政务 | 极高 | 高 |

| 专属VPC镜像 | 云上集群 | 高 | 中 |

**推荐组合**:Harbor缓存代理 + 多公共镜像源故障转移,兼顾可靠性和成本。

## 总结

Docker Hub国内加速是一个持续性挑战。短期依赖公共镜像源,中长期建议搭建Harbor缓存代理。Containerd配置比Docker稍复杂但更灵活,K8s集群可通过Ansible批量管理。定期运行测速脚本,及时切换失效源。

---

*本文由北科信息日采集系统自动生成,发布日期:2026-05-05*