OpenClaw와 Ollama를 각각 Docker 컨테이너로 실행할 때, 두 컨테이너가 서로 통신하도록 네트워크를 연결하는 과정을 정리했다.
환경
- OS: Windows 11 + WSL2 (Ubuntu)
- Docker Desktop
- OpenClaw: docker-compose로 실행 (/mnt/c/clawdbot)
- Ollama: 별도 Docker 컨테이너로 실행
문제 상황
OpenClaw와 Ollama를 각각 독립된 Docker 컨테이너로 실행하면, 기본적으로 서로 다른 네트워크에 속하게 된다. 이 상태에서는 OpenClaw가 Ollama에 접근할 수 없어 연결 오류가 발생한다.
트러블슈팅 과정
1단계: 네트워크 확인
먼저 현재 Docker 네트워크 상태를 확인한다.
docker network ls
NETWORK ID NAME DRIVER SCOPE
b0b244886b91 bridge bridge local
8eade16da4b1 clawdbot_default bridge local
2889821e834b clawdbot_openclaw-net bridge local
8bc80a2e5471 host host local
14980b8324ab none null local
OpenClaw는 clawdbot_openclaw-net 네트워크를 사용하고 있었다. Ollama 컨테이너가 이 네트워크에 포함되어 있는지 확인한다.
docker network inspect clawdbot_openclaw-net | grep -A 5 "Containers"
"Containers": {
"0d103a074adf...": {
"Name": "clawdbot-openclaw-gateway-1",
...
}
}
OpenClaw 컨테이너만 있고 Ollama는 없었다. 이것이 연결 실패의 원인이었다.
2단계: Ollama를 OpenClaw 네트워크에 연결
docker network connect clawdbot_openclaw-net ollama
연결 후 OpenClaw 컨테이너 내부에서 Ollama에 접근 가능한지 테스트한다.
docker exec -it clawdbot-openclaw-gateway-1 curl http://ollama:11434/api/tags
{"models":[{"name":"llama3.2:latest","model":"llama3.2:latest",...}]}
네트워크 연결은 성공했다.
3단계: openclaw.json 설정
네트워크 연결 후에도 채팅이 작동하지 않았다. 원인은 openclaw.json 설정 문제였다.
시행착오 1: api 필드 누락
처음 설정:
"ollama": {
"baseUrl": "http://ollama:11434/v1",
"apiKey": "ollama-local"
}
오류:
Error: No API provider registered for api: undefined
api 필드가 없으면 OpenClaw가 어떤 API 방식을 사용할지 알 수 없어서 크래시가 발생한다.
시행착오 2: openai-responses API 타입 사용
"api": "openai-responses"
같은 오류가 반복됐다. OpenClaw의 Ollama 통합은 native Ollama API를 사용해야 한다.
최종 설정:
"models": {
"providers": {
"ollama": {
"baseUrl": "http://ollama:11434",
"apiKey": "ollama-local",
"api": "ollama",
"models": [
{
"id": "llama3.2:latest",
"name": "Llama 3.2",
"input": ["text"],
"reasoning": false,
"cost": {"input": 0, "output": 0},
"contextWindow": 32000,
"maxTokens": 4096
}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "ollama/llama3.2:latest"
}
}
}
핵심 포인트:
- baseUrl에서 /v1 제거 → native Ollama API 사용
- "api": "ollama" 명시 필수
- models 배열 필수 (없으면 config validation 오류 발생)
4단계: docker-compose.yml에 ollama 추가 (영구 설정)
docker network connect 명령은 컨테이너 재시작 시 초기화된다. 영구적으로 같은 네트워크를 공유하려면 docker-compose.yml에 ollama를 추가한다.
services:
openclaw-gateway:
networks:
- openclaw-net
ollama:
image: ollama/ollama
container_name: ollama
ports:
- "11434:11434"
volumes:
- ollama:/root/.ollama
networks:
- openclaw-net
restart: unless-stopped
networks:
openclaw-net:
driver: bridge
volumes:
ollama:
external: true
그 다음 재시작:
docker compose down
docker compose up -d
최종 결과
OpenClaw 로그에서 다음과 같이 모델이 정상 인식됨을 확인:
[gateway] agent model: ollama/llama3.2:latest
채팅 시 Ollama 컨테이너 CPU가 약 400%까지 올라가며 추론이 실행되는 것을 확인할 수 있다.
요약
문제 원인 해결
| curl: (6) Could not resolve host: ollama | 컨테이너 간 네트워크 분리 | docker network connect로 같은 네트워크 연결 |
| No API provider registered for api: undefined | api 필드 누락 | "api": "ollama" 명시 |
| config validation 오류 | models 배열 누락 | models 배열 추가 필수 |
| 재시작 후 네트워크 끊김 | 임시 네트워크 연결 | docker-compose.yml에 ollama 서비스 추가 |
'AI' 카테고리의 다른 글
| Docker 환경에서 Ollama + OpenClaw(Clawdbot) 설치하기 (0) | 2026.02.23 |
|---|---|
| sQuiry: AI 서버와 통신하는 프론트엔드 개발 (0) | 2026.02.10 |
| sQuiry: 오픈소스 LLM과 RAG 기반 자연어-SQL 변환 서비스 (0) | 2026.02.09 |
| SpeakSH: Claude AI로 서버 관리 (시나리오) (0) | 2026.02.07 |
| SpeakSH: Claude Desktop 연동 (0) | 2026.02.06 |