Docker容器中Khoj AI无法访问主机LMStudio服务器的问题求助
解决Docker容器内Khoj AI访问主机LMStudio的问题
问题根源:Docker容器内的localhost指向容器自身,而非宿主机,因此原配置中http://localhost:1234/v1/无法访问到主机上的LMStudio服务。
以下是三种可行的解决方法:
方法1:使用Docker Host网络模式
修改Khoj的docker-compose.yml配置,给Khoj服务添加网络模式配置:
services: khoj: # 保留原有其他配置 network_mode: host
- 此模式下容器与宿主机共享网络栈,容器内的
localhost直接映射到宿主机,无需修改OPENAI_API_BASE配置。 - 注意:若原有配置中有
ports端口映射项,可移除(共享网络后端口直接暴露)。
方法2:使用宿主机实际IP地址
- 查找宿主机的局域网IP:
- Linux/macOS:执行
ip addr或ifconfig,找到对应网卡的IP(如192.168.3.10)。 - Windows:执行
ipconfig,找到本地连接的IPv4地址。
- Linux/macOS:执行
- 修改
OPENAI_API_BASE配置为:
示例:- OPENAI_API_BASE=http://[宿主机IP]:1234/v1/OPENAI_API_BASE=http://192.168.3.10:1234/v1/ - 确保LMStudio的服务器绑定地址为
0.0.0.0(而非仅localhost),否则容器无法访问。在LMStudio设置中调整服务器监听地址为0.0.0.0:1234。
方法3:使用Docker Desktop专属DNS名称(仅适用于Windows/macOS Docker Desktop)
直接将OPENAI_API_BASE配置修改为:
- OPENAI_API_BASE=http://host.docker.internal:1234/v1/
host.docker.internal是Docker Desktop提供的固定DNS名称,会自动解析到宿主机IP。
验证步骤
修改配置后重启Khoj容器,可进入容器内部测试连通性:
# 进入Khoj容器(替换为实际容器名称) docker exec -it khoj-container-name bash # 测试访问LMStudio curl http://[对应地址]:1234/v1/models/
若能正常获取响应,再通过Khoj GUI前端测试即可。
内容的提问来源于stack exchange,提问作者Max Korhonen
相关产品推荐
相关产品推荐

