文章首發(fā)于/公/眾/號(hào):阿拉平平
不知道大家有沒(méi)有注意,我在介紹項(xiàng)目安裝時(shí),基本只介紹容器的用法。我覺(jué)得對(duì)新手而言,容器化部署一定是最友好的,也是效率最高的。不過(guò)問(wèn)題也很明顯,Docker 默認(rèn)會(huì)從 Docker Hub 拉取鏡像,但因?yàn)榫W(wǎng)絡(luò)原因,導(dǎo)致無(wú)法拉取。那這個(gè)難題有沒(méi)有辦法解決呢?
1. 項(xiàng)目介紹
KSpeeder[1] 是一個(gè)用于優(yōu)化 Docker 鏡像倉(cāng)庫(kù)訪問(wèn)的工具,它提供了智能鏡像源選擇、下載加速、狀態(tài)監(jiān)控等功能。項(xiàng)目提供了多架構(gòu)支持,可以在不同的硬件平臺(tái)上運(yùn)行。
2. 快速安裝
首先使用鏡像代理下載鏡像:
# 拉取鏡像
docker pull docker.m.daocloud.io/linkease/kspeeder
# 打上標(biāo)簽
docker tag docker.m.daocloud.io/linkease/kspeeder docker.io/linkease/kspeeder
再創(chuàng)建 docker-compose.yaml,目錄結(jié)構(gòu)如下:
/opt/KSpeeder
└── docker-compose.yaml
docker-compose.yaml 內(nèi)容如下:
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
添加好后,在目錄中運(yùn)行以下命令:
docker-compose up -d
服務(wù)啟動(dòng)后,在瀏覽器中輸入 http://<IP>:5003 來(lái)訪問(wèn)。

3. 使用說(shuō)明
為了測(cè)試 KSpeeder 的加速效果,我決定拉取一個(gè)大體積鏡像,比如之前介紹過(guò)的 Hoppscotch。
正常情況下,拉取 Hoppscotch 鏡像的命令為:
docker pull hoppscotch/hoppscotch
要使用 KSpeeder 加速,只需加上前綴 registry.linkease.net:5443 就行了,完整的命令如下:
docker pull registry.linkease.net:5443/hoppscotch/hoppscotch
管理頁(yè)面顯示下載速度可以達(dá)到 10 M/s 以上。

4. 其它配置
每次拉取鏡像都要加上前綴,多少有些麻煩了。我使用的是 Linux 服務(wù)器,只需修改下 Docker 的配置就可以解決這個(gè)問(wèn)題。
編輯 Docker 配置文件(不存在的話則新建):
vi /etc/docker/daemon.json
添加 registry-mirrors 字段并指定 KSpeeder 的鏡像服務(wù)器:
{
"registry-mirrors": ["https://registry.linkease.net:5443"]
}
保存配置文件,重啟 Docker 服務(wù)讓其生效:
systemctl restart docker
服務(wù)重啟好后,再拉取鏡像就不用加上前綴了。

5. 寫(xiě)在最后
針對(duì) Docker 無(wú)法拉取鏡像的情況,通常的做法是配置鏡像加速站。但是很多時(shí)候,加速站并不穩(wěn)定,可能運(yùn)行一段時(shí)間后就失效了。KSpeeder 則不失為一個(gè)更加簡(jiǎn)單便捷的解決方案,部署起來(lái)也挺方便的。
References
[1] KSpeeder:https://github.com/kspeeder/docker_kspeeder