AI

M3 맥북 도커 데스크탑 메모리 6GB 제한으로 로컬 LLM 동시 실행 시 OOM 트러블슈팅

M3 맥북 도커 데스크탑 메모리 6GB 제한으로 로컬 LLM 동시 실행 시 OOM 트러블슈팅

맥북에 64GB 메모리 달려있는데 도커 컨테이너가 OOM으로 죽어요. 억울하죠?

Ollama에 모델 두 개 올리는 순간 터지는 거, 한 번 겪으면 진짜 황당해요. 원인은 맥북이 아니에요. 도커 기본 메모리 설정이 고작 2GB이기 때문이에요.

핵심 요약

  • 도커 데스크탑 기본 메모리 할당은 2GB예요. M3 맥북 실제 메모리와 무관하게 별도 설정이 필요해요.
  • 7B 모델 두 개(Llama 3 8B + Mistral 7B) 동시 실행하려면 최소 12GB 이상 할당이 필요해요.
  • 6GB로 제한하면 단일 7B 모델은 돌아가지만, 두 번째 모델 로딩 시 컨테이너가 강제 종료돼요.
  • Docker Desktop 리소스 설정에서 메모리 상한 조정하면 OOM 문제 바로 잡혀요.
  • M3 통합 메모리 구조는 LLM 추론에 유리하지만, 도커 VM 레이어를 거치면 그 장점이 절반 이상 희석돼요.

M3 맥북인데 왜 메모리 부족이 날까요?

M3 맥북이 로컬 AI 개발 환경으로 주목받기 시작한 건 2024년 말부터예요. Apple Silicon의 통합 메모리(Unified Memory) 구조 덕분에 GPU와 CPU가 같은 메모리 풀을 공유해요. Ollama 같은 LLM 런타임이 VRAM 따로, RAM 따로 신경 쓸 필요 없이 전체 메모리를 모델에 바로 쓸 수 있거든요. Reddit r/LocalLLM에서 “맥 미니 M4 Pro 48GB가 사실상 로컬 AI 서버"라는 게시글이 수백 개 댓글을 달고 있을 정도예요.

그런데 문제는 도커가 macOS 위에서 작동하는 방식이에요.

macOS는 Linux 커널이 아니에요. 그래서 도커 데스크탑은 내부적으로 경량 리눅스 VM을 하나 띄우고, 그 안에서 컨테이너를 돌려요. 이 VM에 할당된 메모리가 도커 컨테이너가 실제로 쓸 수 있는 메모리의 상한이에요. 기본값은 2GB예요. M3 맥북 프로에 36GB가 있어도, 도커는 2GB 안에서만 노는 거죠.

그래서 “6GB 제한” 설정이 커뮤니티에서 자주 언급돼요. 많은 사람들이 “최소한 Llama 3 8B 하나는 돌아가겠지"라고 생각하고 설정하는 값이거든요. 실제로 하나는 돌아요. 근데 두 번째 모델을 올리는 순간? 터져요.


메모리 설정별 실제 동작 비교

숫자로 보면 훨씬 명확해요.

설정값7B 모델 1개7B 모델 2개 동시13B 모델 1개비고
2GB (기본)❌ OOM모델 로딩 자체 불가
6GB✅ 가능❌ OOM 빈번트러블슈팅 핵심 구간
12GB✅ 안정적✅ 불안정✅ 가능실용 최소 라인
24GB✅ 안정적✅ 안정적✅ 안정적권장 설정

Ollama GitHub 이슈 트래커 및 r/LocalLLM 사용자 보고 기반 (2026년 3월 기준)

7B급 모델(llama3:8b, mistral:7b) 4-bit 양자화 버전은 메모리를 약 4~5GB 차지해요. 6GB 환경에서 하나 올리면 1GB 남는 셈인데, 컨테이너 운영 오버헤드까지 더하면 마진이 사실상 없어요.


3단계로 해결하기

1단계: Docker Desktop 리소스 설정 변경

Docker Desktop 열고 Settings → Resources → Memory로 가요. 슬라이더로 조정하거나 직접 수치 입력하면 돼요. 단일 모델이면 12GB, 두 개 동시 실행이면 24GB를 기준점으로 잡으세요.

Apply & Restart 클릭하면 VM이 재시작되면서 새 설정이 바로 적용돼요.

2단계: Ollama 컨테이너 메모리 상한 지정

docker-compose.yml에서 컨테이너 자체 상한도 명시해줘야 해요.

services:
  ollama:
    image: ollama/ollama
    deploy:
      resources:
        limits:
          memory: 20g
        reservations:
          memory: 8g
    volumes:
      - ollama_data:/root/.ollama

VM 전체를 24GB로 잡았다면 컨테이너 한도는 20GB로 설정해서 OS 오버헤드에 여유를 줘야 해요. 이걸 안 하면 macOS 자체가 느려지는 상황이 생겨요.

3단계: 모델 로딩 전략 조정 (6GB 환경에 갇혀있다면)

사정상 6GB를 넘기기 어렵다면, 동시 실행 대신 순차 실행으로 전략을 바꾸는 게 현실적이에요.

Option A — 직렬 방식 (6GB 유지)

  • 모델을 순서대로 로드/언로드
  • OLLAMA_KEEP_ALIVE=0 설정 → 응답 후 즉시 메모리 해제
  • 속도는 느려지지만 안정성 확보

Option B — 메모리 12GB 이상으로 업그레이드

  • 동시 실행 가능, 응답 속도 두세 배 향상
  • 설정 복잡도도 낮아짐

6GB로 두 모델 동시 실행하는 건 솔직히 줄타기예요. OLLAMA_KEEP_ALIVE 조정으로 버텨볼 수는 있지만, 안정적인 개발 환경으로 쓰기엔 무리예요.


개발 환경별 권장 설정

시나리오 1: 개인 사이드프로젝트, 단일 LLM 연동

  • 설정: 도커 메모리 8GB, OLLAMA_KEEP_ALIVE=5m
  • 7B 모델 하나 안정적으로 돌리기엔 충분해요. RAG 파이프라인 붙여도 괜찮은 수준이에요.

시나리오 2: 멀티 에이전트 프레임워크 테스트 (LangGraph, CrewAI 등)

  • 설정: 도커 메모리 24GB, 컨테이너 limit 20GB
  • 에이전트 여러 개가 각자 다른 모델 호출하는 구조면 메모리 피크가 예상보다 훨씬 높아요. LangGraph + Ollama 조합이 로컬 에이전트 테스트 표준으로 자리잡으면서 이 시나리오가 급증했어요.

시나리오 3: CI 파이프라인에서 LLM 테스트 포함

  • 설정: GitHub Actions self-hosted runner에 맥 미니 M4 사용, 도커 메모리 32GB
  • 이 케이스에서는 Ollama를 컨테이너로 띄우는 것보다 호스트에 직접 설치하는 게 오버헤드가 적어요. VM 레이어를 한 겹 줄이는 거거든요.

앞으로 주시할 것들

  • 도커 데스크탑 메모리 자동 조정: Docker Desktop 4.x에서 동적 할당 기능 실험 중이에요. 활성화되면 고정 슬라이더 대신 macOS가 필요에 따라 VM에 메모리를 빌려주는 방식으로 바뀔 수 있어요.
  • Ollama 모델 멀티플렉싱: 단일 프로세스에서 여러 모델을 시분할 실행하는 기능이 로드맵에 올라와 있어요. 구현되면 6GB에서도 두 모델 전환이 훨씬 자연스러워질 수 있어요.
  • Apple Intelligence 로컬 API 개방 여부: WWDC 2026을 앞두고 애플이 온디바이스 모델 API를 서드파티에 열지 여부가 관심사예요. 열린다면 도커 없이 모델을 직접 쓰는 패턴이 생길 수 있어요.

결국 이 문제는 하드웨어 한계가 아니라 설정 레이어의 오해에서 비롯돼요. 맥북에 36GB가 있어도 도커는 VM 안에서만 살거든요.

도커 메모리 12GB 이상으로 올리고, 컨테이너 limit 명시적으로 잡고, 모델 로딩 전략을 워크로드에 맞게 조정하는 것. 이 세 가지만 잡아도 로컬 LLM 동시 실행 트러블슈팅의 80%는 해결돼요.

지금 어떤 설정으로 Ollama 쓰고 계세요? 먼저 docker info | grep -i memory 한 줄 실행해보세요. 현재 상태가 바로 보이거든요.

참고자료

  1. 맥미니 대란 - OpenClaw가 만든 AI 서버 시대, 모델별 구매 가이드
  2. M1 맥북 프로에서 로컬 LLM을 구동해보자
  3. 로컬 설정에 Openclaw 가리키기 : r/LocalLLM

Photo by Markus Winkler on Unsplash