一、问题描述
在使用docker-compose.yml创建llama-cpp容器时,pulling拉取llama.cpp资源总是报错,尝试了好多个镜像地址都提示网络问题。
二、走过的坑
- GitHub Container Registry (官方):ghcr.io/ggml-org/llama.cpp:server(下载不了)
- Docker Hub:ggml/llama.cpp:server(下载不了)
- 南京大学 GHCR 镜像:ghcr.nju.edu.cn/ggml-org/llama.cpp:server(下载不了)
以上是通过配置在docker-compose.yml文件中获取的,结果都宣告失败。
于是,放弃在docker-compose创建容器时下载,可以提前使用docker拉取,于是尝试如下方案:
powershell
docker pull ghcr.io/ggml-org/llama.cpp:server
结果每次下载到10M左右就失败了。于是考虑限制多路下载,每次只允许一路下载:
powershell
# 创建/编辑 Docker daemon 配置
sudo tee /etc/docker/daemon.json <<'EOF'
{
"max-concurrent-downloads": 1,
"registry-mirrors": []
}
EOF
# 重启 Docker 使配置生效
sudo systemctl restart docker
# 重新拉取(失败就重复执行,Docker 会续传已下载的层)
docker pull ghcr.io/ggml-org/llama.cpp:server
这种方式能比直接docker pull拉取强一点点,但不多,尝试下来问题依然一样,下载一段时间后就中断了。
三、终极解决方案
使用 skopeo 替代 docker pull(断点续传更稳):
powershell
skopeo copy --retry-times 20 docker://ghcr.io/ggml-org/llama.cpp:server docker-daemon:ghcr.io/ggml-org/llama.cpp:server
通过这种方式最终搞定,效果如下:

此时,查看docker镜像就能查询到:
powershell
docker images #查询指令
i Info → U In Use
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
ghcr.io/ggml-org/llama.cpp:server eabdacc34c4c 1.21GB 311MB
最后,继续执行docker compose up -d创建容器即可,确保docker-compose.yaml中的image地址与下载地址(ghcr.io/ggml-org/llama.cpp:server)保持一致。