Ai Coding

맥북에서 도커로 로컬 모델 돌리기

Docker Model Runner로 맥북에서 로컬 모델을 돌리는 절차를 정리했다. 같은 질문을 Ollama와 나란히 돌려 속도도 비교했다.

고쳐 쓰며 반복되는 작업의 흐름을 나타낸 추상 도판
AI 생성

Docker(v4.40 이후)의 Model Runner 기능으로 AI 모델을 실행할 수 있게 되었다. Docker Desktop 4.41 에는 모델을 직접 실행하고 간단히 테스트할 수 있는 채팅 인터페이스가 추가됐고, 2025년 4월 28일부터는 NVIDIA GPU 가 달린 x86 Windows 에서도 Model Runner 를 쓸 수 있다.

추론 모델이 등장하면서 크기가 작은 모델도 추론 시간을 주면 성능이 크게 오른 결과물 을 얻을 수 있게 되었다. 그래서 맥북 같은 개인 디바이스에서 돌리는 AI 모델의 활용도를 다시 생각해 봐야 하는 시기가 온 것 같다.

Docker Desktop 의 Model Runner 설정 화면

1. Docker Desktop 설정

Settings > Features in development 에서 “Enable Docker Model Runner” 를 활성화한다(기본값: 활성화). host-side TCP support 를 켜면 API 엔드포인트용 포트도 지정할 수 있다.

모델을 돌릴 때는 메모리를 쓴다. 맥북은 CPU 와 GPU 가 함께 쓰는 통합 메모리 구조이므로 충분히 확보해 주는 것이 좋다. 쓰는 메모리는 모델 크기에 따라 달라진다. Settings > Resource 에서 메모리를 설정한다.

2. 모델 내려받기

생성형 AI 모델 카탈로그에서 받을 모델을 고른다. 상세 페이지에 모델 크기별 스펙과 필요한 VRAM 이 적혀 있다. 참고로 실제 할당되는 메모리는 표기된 것보다 적게 나왔다.

# 내려받기
docker model pull ai/qwen3:8B-F16

# 터미널에서 바로 채팅
docker model run ai/qwen3:8B-F16

# 질문을 같이 넘기기
docker model run ai/qwen3:8B-F16 "안녕하세요!"

3. 맥북에서 추천하는 모델 크기

맥북 메모리 36GB 기준이다. 통합 메모리라 시스템과 앱이 쓰는 메모리까지 고려해야 한다. 일반적으로 모델 구동에 필요한 메모리가 20GB 이하 인 것을 권한다. 양자화를 고려하면 대체로 이런 크기를 써 볼 수 있다.

  • FP16(16-bit) — 약 15B 파라미터 이하 (예: Llama 2 13B)
  • 8-bit — 약 30B 파라미터 이하 (예: Llama 3 34B, CodeLlama 33B)
  • 4-bit — 45~60B 파라미터 이하 (예: Mixtral 8×7B, Llama 2 70B 제한적)

4. Docker vs Ollama

같은 질문을 양쪽에 던져 비교했다.

  • 모델: Qwen3-8B (fp16)
  • 질문: 오늘 사과를 5개 들고 있습니다. 어제 사과를 3개 먹었다면 지금 몇 개의 사과를 들고 있을까요?

Docker

  • 사용된 메모리: 14.18GB
  • 생성 속도: 1,470토큰 / 70.55초 ≈ 20.83 tokens/sec
  • 결과: “오늘 사과를 5개 들고 있으며, 어제 사과를 3개 먹었다는 정보는 현재의 사과 수와 직접적인 관계가 없습니다. ’지금’은 오늘을 의미하므로, 현재 가지고 있는 사과의 수는 5개입니다. 과거에 먹은 사과는 현재의 소유량에 영향을 주지 않습니다.”

Ollama

  • 사용된 메모리: 14.09GB
  • 생성 속도: 1,189토큰 / 68.55초 ≈ 17.34 tokens/sec
  • 결과: “오늘 사과를 5개 들고 있으며, 어제 사과를 3개 먹었다는 정보는 현재의 사과 수에 직접적인 영향을 주지 않습니다. 사과를 먹은 것은 과거의 행동이므로, 현재 가지고 있는 사과 수는 여전히 5개입니다.”

llama.cpp 기반 추론 엔진이 Docker Desktop 에 내장되어 있으며, 대체로 Docker 가 Ollama 보다 빠르게 답변을 만들고 있다.

Docker 와 Ollama 응답 비교 화면

5. AI 서비스와 함께 배포하는 예제

Go, Python, Node 프로젝트와 함께 모델을 배포하는 예제다. .env 파일에 어떤 모델을 쓸지 고친 뒤 run.sh 를 실행하면 프레임워크별로 포트를 다르게 해서 돌려 볼 수 있다.

알려진 문제

  • 충분한 GPU 메모리나 시스템 RAM 없이 큰 LLM 을 실행하면 심각한 속도 저하가 발생한다
  • 베타 단계이므로 예상하지 못한 이슈가 있을 수 있다

더 보기