风险提示:虚拟货币不具有法定货币等同的法律地位,参与虚拟货币投资交易存在法律风险,继续浏览代表你同意以上所有声明,否则请立即关闭本站!

从 HiveOS 环境部署 -> 云端下载镜像和模型 -> 回传 HiveOS -> 运行与显存常驻 -> 常见报错处理


一、你的最终方案(结论先说)

你当前最稳方案是:

  • HiveOS:只负责运行 Ollama(GPU 推理节点)
  • 云服务器:负责联网下载 ollama 镜像和模型
  • 本地电脑:中转大文件(scp 下载/上传)
  • HiveOS 不再直接从外网拉模型(因为你已出现 Docker Hub 超时)

二、HiveOS 环境部署(一次性)

1) 安装 Docker CE(Ubuntu 22.04 jammy)

apt-get update
apt-get install -y ca-certificates curl gnupg

install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg

echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable" > /etc/apt/sources.list.d/docker.list
apt-get update

apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
你之前 docker-ce has no installation candidate 的根因就是源没生效/不匹配,这里已按 jammy 固定。

2) 若 Docker daemon 起不来(你已遇到)

你遇到过:
failed to create NAT chain DOCKER ... table nat ... Operation not supported

修复(关键):

update-alternatives --set iptables /usr/sbin/iptables-legacy
update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
systemctl restart containerd
systemctl restart docker
docker version

看到 Server: 即 Docker daemon 正常。


3) 安装 NVIDIA Container Toolkit(支持 --gpus all)

你遇到过 failed to discover GPU vendor from CDI,本节就是解决它。
apt-get update
apt-get install -y curl gnupg2 ca-certificates lsb-release

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
  | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
  | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
  > /etc/apt/sources.list.d/nvidia-container-toolkit.list

apt-get update
apt-get install -y nvidia-container-toolkit

nvidia-ctk runtime configure --runtime=docker
mkdir -p /etc/cdi
nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml
nvidia-ctk cdi list

systemctl restart containerd
systemctl restart docker

验证 GPU 容器(你这步已成功过):

docker run --rm --gpus all nvidia/cuda:12.0.0-base-ubuntu22.04 nvidia-smi

三、云端下载镜像与模型(核心离线准备)

在阿里云 ECS 执行(能联网)。

1) 云端装 Docker(搬运机够用)

apt-get update
apt-get install -y docker.io
systemctl enable --now docker
docker version

2) 拉 Ollama 镜像并下载模型到挂载目录

mkdir -p /data/ollama

docker rm -f ollama-build 2>/dev/null || true
docker run -d --name ollama-build \
  -v /data/ollama:/root/.ollama \
  -p 11434:11434 \
  ollama/ollama:latest

拉你要的模型(示例):

docker exec -it ollama-build ollama pull qwen2.5:14b
docker exec -it ollama-build ollama list

3) 打包两部分(必须)

docker save -o /root/ollama_image.tar ollama/ollama:latest
tar -czf /root/ollama_models.tar.gz -C /data ollama
sha256sum /root/ollama_image.tar /root/ollama_models.tar.gz > /root/sha256.txt

四、下载到本地,再上传到 HiveOS

1) 云端 -> 本地(在你电脑执行)

scp root@<ECS_IP>:/root/ollama_image.tar .
scp root@<ECS_IP>:/root/ollama_models.tar.gz .
scp root@<ECS_IP>:/root/sha256.txt .

Windows PowerShell 可写成:

scp root@<ECS_IP>:/root/ollama_image.tar C:\Users\dekun\Downloads\
scp root@<ECS_IP>:/root/ollama_models.tar.gz C:\Users\dekun\Downloads\
scp root@<ECS_IP>:/root/sha256.txt C:\Users\dekun\Downloads\

2) 本地 -> HiveOS

scp ollama_image.tar root@<HIVEOS_IP>:/root/
scp ollama_models.tar.gz root@<HIVEOS_IP>:/root/
scp sha256.txt root@<HIVEOS_IP>:/root/

五、HiveOS 导入并正式运行

1) 导入文件

cd /root
sha256sum -c sha256.txt

docker load -i ollama_image.tar

mkdir -p /opt/ollama
tar -xzf ollama_models.tar.gz -C /opt
# 确保最终模型目录是 /opt/ollama
ls -lah /opt/ollama

2) 启动 Ollama(GPU + 持久化 + 常驻策略)

docker rm -f ollama 2>/dev/null || true

docker run -d --name ollama --restart unless-stopped \
  --gpus all \
  -p 11434:11434 \
  -v /opt/ollama:/root/.ollama \
  -e OLLAMA_KEEP_ALIVE=24h \
  ollama/ollama:latest

3) 验证服务与模型

docker ps
docker logs --tail=120 ollama
curl -s http://127.0.0.1:11434/api/tags
docker exec -it ollama ollama list

你之前看到 {"models":[]} 是因为还没导入模型目录;导入后这里应有模型。


六、模型显存常驻(你关心重点)

1) 服务级保活:已设 OLLAMA_KEEP_ALIVE=24h
2) 请求级保活:调用时加 keep_alive

预热命令:

curl -s http://127.0.0.1:11434/api/generate \
  -d '{"model":"qwen2.5:14b","prompt":"hello","stream":false,"keep_alive":"24h"}'

检查加载:

docker exec -it ollama ollama ps
nvidia-smi

看到模型在 ollama ps,且显存有占用,即常驻成功。


七、策略机接入

策略机设置:

OLLAMA_BASE_URL=http://<HIVEOS_IP>:11434

连通测试:

curl http://<HIVEOS_IP>:11434/api/tags

八、你这次遇到的报错与对应处理(汇总)

  • docker-ce ... no installation candidate
    -> Docker 官方源未正确生效,重配 docker.list(jammy/amd64)
  • docker.service failed ... table nat / Operation not supported
    -> 切换 iptables-legacy
  • registry-1.docker.io ... i/o timeout
    -> HiveOS 出口不通 Docker Hub,改走云端离线搬运
  • failed to discover GPU vendor from CDI
    -> 安装 nvidia-container-toolkit + nvidia-ctk runtime configure + nvidia-ctk cdi generate
  • {"models":[]}
    -> 仅导了镜像,未导模型目录;恢复 ollama_models.tar.gz/opt/ollama

九、一条最短执行清单(最终)

  1. 云端 ollama pull 模型
  2. 云端打包:ollama_image.tar + ollama_models.tar.gz
  3. 本地中转到 HiveOS
  4. HiveOS docker load + 解压模型到 /opt/ollama
  5. docker run --gpus all -v /opt/ollama:/root/.ollama ... 启动
  6. ollama list + 预热请求 + nvidia-smi 验证常驻

发表评论