在国内直接 docker pull 官方的 soulter/astrbot:latest 往往会卡在 DNS 解析或国外 CDN 上,导致超时。实际上,这背后是跨境链路的拥塞与运营商的流量调度策略,偶尔一次成功也可能是运气成分。要想把这件事变成可预期的流程,关键在于提前把镜像源切换到国内的加速站点,并让 Docker 引擎在解析时优先走这些站点。
m.daocloud.io/docker.io/soulter/astrbot:latestregistry.cn-hangzhou.aliyuncs.com/soulter/astrbot:latestccr.ccs.tencentyun.com/soulter/astrbot:latestswr.cn-north-4.myhuaweicloud.com/soulter/astrbot:latest这些站点背后都有专线直连 Docker Hub,平均响应时间从 200 ms 降到 30 ms 左右。实际使用时,只需要把 Compose 或 Dockerfile 中的 image 字段替换为对应的加速地址,后续的拉取就会自动走国内线路。
{
"registry-mirrors": [
"https://m.daocloud.io",
"https://registry.cn-hangzhou.aliyuncs.com"
],
"insecure-registries": [
"ccr.ccs.tencentyun.com"
],
"dns": ["223.5.5.5","223.6.6.6"]
}
把上面的 JSON 保存为 /etc/docker/daemon.json(Linux)或 %programdata%dockerconfigdaemon.json(Windows),重启 Docker 服务后,所有后续的 pull、compose up 都会默认走镜像加速。值得注意的是,dns 项使用运营商的大公网 DNS 能进一步压缩解析时延。
下面是一段完整的命令序列,演示了从配置到运行的闭环。先切换目录,再写入 Compose,最后使用加速镜像启动:
mkdir -p ~/astrbot && cd ~/astrbot
cat > docker-compose.yml <<EOF
version: "3.8"
services:
astrbot:
image: m.daocloud.io/docker.io/soulter/astrbot:latest
container_name: astrbot
ports:
- "6180-6200:6180-6200"
- "11451:11451"
volumes:
- ./data:/AstrBot/data
restart: unless-stopped
EOF
docker compose up -d
docker logs -f astrbot
执行完毕后,日志里会出现类似「🌈 管理面板已启动」的提示,此时打开 http://:6180 即可进入 AstrBot 的 Web UI。若是云服务器,记得在安全组里放通 6180‑6200 与 11451 端口。
参与讨论
这配置写得挺细,直接照着改果然快多了👍
阿里云那个镜像我用过,拉取基本秒下
腾讯云的 registry 要不要先登录啊?求问
前几天刚折腾完这个,国内不配镜像真的寸步难行
华为云swr有时候抽风,不如daocloud稳
换源确实管用,但dns设成114是不是也行?
说是能加速,但我这边还是卡在下载层咋回事
m.daocloud.io这个记下了,下次直接套用