在 Docker 中运行的 Ollama 实际上是以容器化的形式部署服务,而 ollama 命令行工具默认不会直接安装到宿主机系统中。以下是解决方法:


1. 直接通过容器运行命令

方式一:通过 docker exec 在容器内执行
# 进入已运行的 Ollama 容器内部执行命令
docker exec -it ollama ollama run llama3
方式二:通过 docker run 临时运行命令
# 在每次使用时运行一个临时容器
docker run --rm -v ollama:/root/.ollama -p 11434:11434 ollama/ollama ollama run llama3

2. 映射 Ollama 服务端口到宿主机

Ollama 的 HTTP API 默认监听端口 11434,您可以直接通过 HTTP 访问它(无需 ollama 命令):

运行容器时映射端口:
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
通过 HTTP 接口与 Ollama 交互:
# 查询模型列表
curl http://localhost:11434/api/tags

# 运行模型交互
curl http://localhost:11434/api/generate -d '{
  "model": "llama3",
  "prompt": "你好,世界"
}'

3. 在宿主机安装 ollama CLI 工具(推荐)

如果希望直接在宿主机使用 ollama 命令,需额外安装客户端工具:

Linux/macOS/WSL:
curl -fsSL https://ollama.com/install.sh | sh
Windows:

4. 配置 Ollama 客户端连接 Docker 容器

如果宿主机安装的 ollama CLI 需要连接到 Docker 容器中的服务,需指定服务地址:

设置环境变量:
# Linux/macOS/WSL
export OLLAMA_HOST=http://localhost:11434

# Windows(PowerShell)
$env:OLLAMA_HOST="http://localhost:11434"
验证连接:
ollama list  # 应返回 Docker 容器内的模型列表

可能遇到的报错及解决

报错:Error: Get "http://localhost:11434/...": dial tcp 127.0.0.1:11434: connect: connection refused
  1. 检查容器是否运行

    docker ps -a | grep ollama
    
    • 如果未运行,启动容器:
      docker start ollama
      
  2. 验证端口映射

    docker port ollama 11434  # 应输出 0.0.0.0:11434
    
    • 如果未映射,重新运行容器:
      docker run -d -p 11434:11434 --name ollama ollama/ollama
      

总结

场景 解决方案 优点 缺点
直接使用容器内命令 docker execdocker run 无需额外配置 命令冗长,无法原生集成 Shell
通过 HTTP API 交互 使用 curl 或其他 HTTP 客户端 灵活,适合脚本调用 需要手动构造请求
宿主机安装 CLI 工具 官网安装后连接容器 原生体验 需要配置 OLLAMA_HOST

建议选择 宿主机安装 CLI 工具 + 指定 OLLAMA_HOST 的组合,体验最接近原生。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐