“`markdown
本地运行 Ollama Docker 指南
简介
Ollama 是一款强大的工具,它使得在本地运行大型语言模型(LLMs)变得简单而高效。通过 Ollama,您可以轻松地下载、运行并管理各种开源模型,从而在您的机器上进行实验和开发,而无需依赖云服务。
Docker 是一个开源平台,用于开发、发布和运行应用程序。它通过使用容器来打包应用程序及其所有依赖项,确保应用程序在任何环境中都能一致运行。
将 Ollama 与 Docker 结合,可以在本地提供一个隔离、可移植且易于管理的 LLM 运行环境。这对于开发人员、研究人员和任何希望在本地探索 LLM 的人来说,都是一个理想的解决方案。
先决条件
在开始之前,请确保您的系统满足以下条件:
- Docker Desktop/Engine 安装:您需要在本地安装 Docker。请访问 Docker 官方网站 获取适用于您操作系统的安装指南。
- 基本 Docker 知识:熟悉 Docker 的基本概念(如镜像、容器、卷、端口映射)将有助于您更好地理解本指南。
步骤 1:拉取 Ollama Docker 镜像
首先,您需要从 Docker Hub 拉取 Ollama 的官方镜像。打开您的终端或命令提示符,并执行以下命令:
bash
docker pull ollama/ollama
此命令会下载最新版本的 Ollama Docker 镜像。根据您的网络速度,这可能需要一些时间。
步骤 2:运行 Ollama Docker 容器
拉取镜像后,您可以运行 Ollama 容器。我们建议使用 --name 参数为容器指定一个易于识别的名称(例如 ollama-server),并使用 -v 参数挂载一个卷,以便模型的下载和数据持久化。此外,您需要通过 -p 参数将容器的 11434 端口映射到主机的相同端口,这是 Ollama 服务的默认端口。
bash
docker run -d --name ollama-server -p 11434:11434 -v ollama_data:/root/.ollama ollama/ollama
命令解释:
-d:在后台运行容器(detached mode)。--name ollama-server:为容器指定名称ollama-server。-p 11434:11434:将主机的 11434 端口映射到容器的 11434 端口。-v ollama_data:/root/.ollama:创建一个名为ollama_data的 Docker 卷,并将其挂载到容器内部的/root/.ollama目录。这将确保您下载的模型和任何其他 Ollama 数据在容器重启或删除后仍然存在。ollama/ollama:要运行的 Docker 镜像名称。
您可以运行 docker ps 来确认容器是否正在运行:
bash
docker ps
您应该会看到 ollama-server 容器及其状态。
步骤 3:与 Ollama 容器交互 (下载和运行模型)
一旦 Ollama 容器运行起来,您就可以通过多种方式与之交互:
3.1. 从容器内部交互 (通过 docker exec)
这是最直接的方式,您可以进入运行中的 Ollama 容器,并在其中直接使用 ollama CLI 工具。
首先,进入容器的 shell:
bash
docker exec -it ollama-server ollama bash
现在您已经进入了容器内部。您可以像在本地安装 Ollama 一样使用 ollama 命令。
下载模型示例:
bash
ollama pull llama2
运行模型示例:
bash
ollama run llama2
完成交互后,键入 exit 退出容器 shell。
3.2. 从主机通过 Docker 端口映射交互 (外部应用)
由于您已将容器的 11434 端口映射到主机,因此您可以在主机上或通过网络连接到 Ollama 服务。这对于希望通过 API 与 Ollama 集成的应用程序非常有用。
例如,您可以使用 curl 命令从主机检查 Ollama 服务是否正在运行:
bash
curl http://localhost:11434/api/tags
如果 Ollama 正常运行,您将看到已安装模型的 JSON 列表(如果尚未安装模型,则列表为空)。
步骤 4:访问 Ollama API
Ollama 提供了 REST API,允许您从其他应用程序(如 Python 脚本、Web 应用等)进行程序化交互。通过 Docker 端口映射,您的应用程序可以直接通过 http://localhost:11434 访问 Ollama API。
例如,一个简单的 Python 脚本可以通过 requests 库调用 Ollama API:
“`python
import requests
url = “http://localhost:11434/api/generate”
headers = {“Content-Type”: “application/json”}
data = {
“model”: “llama2”,
“prompt”: “Why is the sky blue?”,
“stream”: False
}
try:
response = requests.post(url, headers=headers, json=data)
response.raise_for_status() # Raise an HTTPError for bad responses (4xx or 5xx)
result = response.json()
print(result[‘response’])
except requests.exceptions.RequestException as e:
print(f”Error calling Ollama API: {e}”)
“`
注意: 在运行此 Python 示例之前,请确保您已经通过 ollama pull llama2 在容器内部下载了 llama2 模型。
步骤 5:管理 Ollama 容器
以下是一些常用的 Docker 命令,用于管理您的 Ollama 容器:
-
停止容器:
bash
docker stop ollama-server -
启动容器:
bash
docker start ollama-server -
重启容器:
bash
docker restart ollama-server -
删除容器:
bash
docker rm ollama-server
注意: 删除容器不会删除关联的ollama_data卷。如果需要,您也需要单独删除卷:docker volume rm ollama_data。 -
查看容器日志:
bash
docker logs ollama-server
结论
通过 Docker 在本地运行 Ollama,您获得了一个灵活、可移植且强大的平台来探索和利用大型语言模型。无论是进行本地开发、测试还是仅仅是个人学习,这种设置都能提供极大的便利。遵循本指南,您应该能够轻松地启动您的 Ollama Docker 环境,并开始您的 LLM 之旅。
祝您使用愉快!
“`