文章首发于/公/众/号:阿拉平平
不知道大家有没有注意,我在介绍项目安装时,基本只介绍容器的用法。我觉得对新手而言,容器化部署一定是最友好的,也是效率最高的。不过问题也很明显,Docker 默认会从 Docker Hub 拉取镜像,但因为网络原因,导致无法拉取。那这个难题有没有办法解决呢?
1. 项目介绍
KSpeeder[1] 是一个用于优化 Docker 镜像仓库访问的工具,它提供了智能镜像源选择、下载加速、状态监控等功能。项目提供了多架构支持,可以在不同的硬件平台上运行。
2. 快速安装
首先使用镜像代理下载镜像:
# 拉取镜像
docker pull docker.m.daocloud.io/linkease/kspeeder
# 打上标签
docker tag docker.m.daocloud.io/linkease/kspeeder docker.io/linkease/kspeeder
再创建 docker-compose.yaml,目录结构如下:
/opt/KSpeeder
└── docker-compose.yaml
docker-compose.yaml 内容如下:
version: "3.8"
services:
kspeeder:
image: linkease/kspeeder:latest
container_name: kspeeder
ports:
- "5443:5443"
- "5003:5003"
volumes:
- ./kspeeder-data:/kspeeder-data
- ./kspeeder-config:/kspeeder-config
restart: unless-stopped
添加好后,在目录中运行以下命令:
docker-compose up -d
服务启动后,在浏览器中输入 http://<IP>:5003 来访问。

3. 使用说明
为了测试 KSpeeder 的加速效果,我决定拉取一个大体积镜像,比如之前介绍过的 Hoppscotch。
正常情况下,拉取 Hoppscotch 镜像的命令为:
docker pull hoppscotch/hoppscotch
要使用 KSpeeder 加速,只需加上前缀 registry.linkease.net:5443 就行了,完整的命令如下:
docker pull registry.linkease.net:5443/hoppscotch/hoppscotch
管理页面显示下载速度可以达到 10 M/s 以上。

4. 其它配置
每次拉取镜像都要加上前缀,多少有些麻烦了。我使用的是 Linux 服务器,只需修改下 Docker 的配置就可以解决这个问题。
编辑 Docker 配置文件(不存在的话则新建):
vi /etc/docker/daemon.json
添加 registry-mirrors 字段并指定 KSpeeder 的镜像服务器:
{
"registry-mirrors": ["https://registry.linkease.net:5443"]
}
保存配置文件,重启 Docker 服务让其生效:
systemctl restart docker
服务重启好后,再拉取镜像就不用加上前缀了。

5. 写在最后
针对 Docker 无法拉取镜像的情况,通常的做法是配置镜像加速站。但是很多时候,加速站并不稳定,可能运行一段时间后就失效了。KSpeeder 则不失为一个更加简单便捷的解决方案,部署起来也挺方便的。
References
[1] KSpeeder:https://github.com/kspeeder/docker_kspeeder