解决Docker镜像拉取超时问题:使用DaoCloud公共镜像加速服务
解决Docker镜像拉取超时问题:使用DaoCloud公共镜像加速服务
问题描述
在使用Docker拉取镜像时,您是否遇到过以下错误信息:
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
这个错误通常是由于网络连接问题或Docker Hub访问缓慢导致的,特别是在国内环境中。本文将介绍一个有效的解决方案——使用DaoCloud提供的公共镜像加速服务。
项目背景与目标
许多Docker镜像都存储在国外的镜像仓库中(如Docker Hub、gcr.io等),国内用户在拉取这些镜像时常常面临速度慢、连接超时等问题。DaoCloud的public-image-mirror项目旨在解决这一痛点。
项目目标
- 简洁有效:通过简单的名称映射实现镜像加速
- 易于扩展:添加新的镜像包无需修改代码
- 稳定可靠:实时更新,每天检查同步情况
- 数据一致性:所有hash(sha256)均与源仓库保持一致(采用懒加载机制)
注意:由于缓存机制,可能存在1小时的延迟。镜像层(blob)会缓存在第三方对象存储上,当前暂未对内容做检测,计划后续添加检测功能。
快速开始
最简单的使用方式是在原镜像地址前添加m.daocloud.io
前缀:
docker run -d -P m.daocloud.io/docker.io/library/nginx
使用方法详解
方法一:增加前缀(推荐方式)
在原镜像地址前添加m.daocloud.io
前缀:
docker.io/library/busybox
|
V
m.daocloud.io/docker.io/library/busybox
方法二:前缀替换
将原镜像仓库的域名替换为对应的加速域名:
docker.io/library/busybox
|
V
docker.m.daocloud.io/library/busybox
无缓存处理
当拉取的镜像没有缓存时,系统会在同步队列中添加同步缓存的任务。
支持的镜像仓库
以下是支持前缀替换的Registry列表(推荐使用添加前缀的方式):
源站 | 替换为 | 备注 |
---|---|---|
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 | 实验内测中 |
最佳实践
加速Kubernetes
加速安装kubeadm
kubeadm config images pull --image-repository k8s-gcr.m.daocloud.io
加速安装kind
kind create cluster --name kind --image m.daocloud.io/docker.io/kindest/node:v1.22.1
加速Containerd
参考Containerd官方文档:hosts.md
如果使用kubespray安装containerd,可以配置containerd_registries_mirrors
。
加速Docker
添加到/etc/docker/daemon.
:
{
"registry-mirrors": [
"https://docker.m.daocloud.io"
]
}
加速Ollama & DeepSeek
加速安装Ollama
CPU版本:
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama docker.m.daocloud.io/ollama/ollama
GPU版本:
- 首先安装Nvidia Container Toolkit
- 运行以下命令启动Ollama容器:
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama docker.m.daocloud.io/ollama/ollama
更多信息请参考:Ollama Docker官方文档
加速使用Deepseek-R1模型(实验内测中)
在启动了ollama容器的前提下,可以通过加速源加速启动DeepSeek相关的模型服务:
# 使用加速源
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
注意:目前Ollama官方源的下载速度已经很快,您也可以直接使用官方源。
使用建议
- 选择合适的时间:建议将拉取任务放在闲时(北京时间01-07点),其他时间段非常拥挤
- 使用明确版本号:建议使用明确版本号的tag,对于latest这种变更后响应旧数据,并且后台重新同步
- 了解服务限制:服务有白名单和限流机制,详细信息请参考#2328
相关资源
友情链接:加速二剑客
- 镜像加速:https://github.com/DaoCloud/public-image-mirror
- 二进制文件加速:https://github.com/DaoCloud/public-binary-files-mirror
贡献者
感谢所有为这个项目做出贡献的开发者:
Made with contrib.rocks.
结语
DaoCloud公共镜像加速服务为国内用户提供了便捷的Docker镜像拉取解决方案。通过简单的域名前缀添加或替换,即可显著提升镜像下载速度,解决连接超时问题。希望本文介绍的方法能够帮助您更高效地进行容器化开发和部署。