AI

Docker 환경에서 OpenClaw와 Ollama 연결

블체. 2026. 2. 24. 00:15

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 서비스 추가
반응형