gunhawk

gunhawk

Frontend Developer

Coding is part of my life, 加藤恵は大好き=。=

关于Docker与Ollama代理的二三事

作者: gunhawk时间: 2025-02-27others

Docker代理

由于不可抗力的原因, docker镜像甚至是公用的镜像源都很难直接访问了. 而私人的镜像源会存在限速或者不稳定等各种问题, 因此设置代理去访问docker镜像才是根本解决之道(以前要是能成功设置代理, 我还会使用镜像源吗233).

但是, 不管你怎么折腾环境变量, 在docker pull <image>时, 所有的流量都不会通过你的代理服务器. 这是跟docker的架构是有关系的, 相信看完这篇如何配置docker通过代理服务器拉取镜像, 你会豁然开朗的.

另外这是对应的官方文档

Ollama代理

同样地, 当你下载大模型的时候, 不知道会不会被蛋疼的网络搞得心情烦躁. 但是无论你怎么在终端进行export环境变量, 下载大模型时的流量也不会经过代理服务器. 这是因为下载大模型的过程是通过Ollama服务器的api进行的, 你可以在服务器日志里面看到/api/download接口的请求日志.

因此, 要在启动Ollama服务器的进程中设置环境变量, 所幸Ollama的代理环境变量是遵循golang的规范, 即HTTPS_PROXYHTTP_PROXY. 只要在终端先执行导出代理变量, 在启动Ollama服务器即可:

# 1. 设置环境变量

# powershell
$env:HTTPS_PROXY=your_proxy_url
$env:HTTP_PROXY=your_proxy_url

# bash
export HTTPS_PROXY=your_proxy_url
export HTTP_PROXY=your_proxy_url
# 2. 启动服务器

./ollama serve

启动服务器后, 在任意终端进行大模型下载, 流量都会先经过代理服务器拉!!!

一些总结

有时候, 直接导出环境变量进行代理不是万能的, 要以程序架构的思维方式来思考. 只有这样, 才能深入问题的本质, 从而轻松解决.