
macOS에서 Docker로 GPU(Apple Silicon Metal)를 사용할 수 있을까?
2026년 기준 전통적 컨테이너 GPU 패스스루는 여전히 불가능하지만,
Docker Model Runner + vllm-metal로 호스트 기반 GPU 가속이 가능.
MPS·MLX·Ollama·Colima 대안까지 비교 정리. 2026.05 업데이트.
요약 (Quick Answer) — 2026.05 기준
질문: macOS Docker 컨테이너 내부에서 GPU를 쓸 수 있나요?
답: 전통적 의미에서는 여전히 불가능합니다. 하지만 2026년 기준 GPU 가속 워크로드를 위한 새로운 길이 열렸습니다.
| 방식 | 컨테이너 GPU 접근 | macOS에서 가능? | 추천 사용처 |
|---|---|---|---|
전통적 docker run --gpus all |
NVIDIA 컨테이너만 | ❌ 여전히 불가 | (Linux/WSL2 전용) |
| Docker Model Runner (2025+) | 호스트에서 직접 실행 | ✅ 가능 | LLM 추론, OpenAI 호환 API |
| Docker Desktop GUI 컨테이너 | LinuxKit VM | ❌ 불가 | — |
| 네이티브 Python + MPS | (Docker 미사용) | ✅ 가능 | PyTorch 학습/추론 |
| Ollama on macOS | (Docker 미사용) | ✅ Metal 자동 사용 | 로컬 LLM |
| 클라우드 GPU | NVIDIA 컨테이너 | ✅ AWS/GCP | 프로덕션 학습 |
핵심 결론: Apple Silicon의 Metal GPU는 호스트에서 직접 접근해야 하며, 컨테이너 내부 패스스루는 macOS 가상화 구조상 여전히 불가능합니다. Docker Model Runner는 이 한계를 "호스트에서 GPU 실행 + 컨테이너 인터페이스 제공"이라는 방식으로 우회합니다.
검증 환경: macOS Sequoia 15.x / Docker Desktop 4.62+ / Apple Silicon M3
마지막 업데이트: 2026-05-20
왜 macOS Docker에서 GPU가 어려운가?
Apple Silicon (M1/M2/M3/M4) Mac
- GPU 패스스루 미지원: Docker Desktop은 LinuxKit + Virtualization.framework 기반 가상 머신 위에서 컨테이너를 실행합니다. Metal GPU를 게스트 VM에 노출할 공식 API가 Apple 측에서 제공되지 않습니다.
- Unified Memory의 양면성: Apple Silicon은 CPU·GPU·Neural Engine이 동일 메모리 풀을 공유합니다. 이는 성능에 유리하지만, 가상화 경계를 넘어 GPU에 접근하기 어렵게 만드는 구조이기도 합니다.
Intel Mac
- PCIe 패스스루 미지원: Docker는 LinuxKit VM 위에서 실행되며, 이 환경에서는 GPU 하드웨어 패스스루를 지원하지 않습니다.
- 내장 그래픽 지원 제한: AMD/Intel 통합 그래픽에 대한 Docker 지원이 제한적입니다.
2026 새로운 길: Docker Model Runner
2025년 4월 출시된 Docker Model Runner는 호스트 기반 실행 방식으로 가상 머신의 성능 제약을 우회하고 Apple Silicon에서 직접 GPU 가속을 제공합니다.
Docker Model Runner의 작동 방식:
- 기존 컨테이너는 그대로 LinuxKit VM에서 실행
- 모델 실행 프로세스만 호스트에서 직접 구동 → Metal GPU 직접 접근 가능
- 호스트의 추론 엔진이 OpenAI 호환 API로 컨테이너에게 응답
기본 사용법:
# Docker Desktop 4.40+ 에서 Model Runner 활성화
docker desktop enable model-runner --tcp=12434
# GGUF 모델 직접 실행 (llama.cpp + Metal 자동)
docker model run ai/llama3.2:3B
# OpenAI 호환 API 호출
curl http://localhost:12434/engines/llama.cpp/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "ai/llama3.2:3B", "messages": [{"role":"user","content":"안녕"}]}'
Apple Silicon에서 자동으로 Metal GPU 사용 — 별도 설정 불필요
vllm-metal로 MLX 모델 서빙하기 (Docker Desktop 4.62+)
2026년 초 Docker는 vLLM의 Apple Silicon 백엔드인 vllm-metal을 Docker Model Runner에 통합. M 시리즈 맥에서 MLX 모델을 OpenAI 호환 API와 Docker 워크플로로 실행 가능
왜 vllm-metal이 중요한가?
- vllm-metal v0.2.0(2026.04)은 Unified paged varlen Metal 커널을 기본 attention 백엔드로 채택, v0.1.0 대비 TTFT 83배, 처리량 3.6배 향상
- PagedAttention, KV cache, GQA(Grouped-Query Attention) 모두 Apple Silicon에서 동작
- 같은 코드가 OpenAI, Anthropic API와 호환
설치 및 실행:
# 1. Docker Desktop 4.62+ 확인
docker --version
# 2. vllm-metal 백엔드 설치
docker model backend install vllm
# 3. MLX 모델 실행 (mlx-community Hugging Face 모델)
docker model run -d hf.co/mlx-community/Mistral-7B-Instruct-v0.3-4bit
# 4. 백엔드 상태 확인
docker model backend ls
# BACKEND STATUS DETAILS
# llama.cpp Running llama.cpp latest-metal e365e65
# vllm Running vllm-metal v0.2.0+
언제 llama.cpp vs vllm-metal?
- 단발성 추론, 안정성 우선 → llama.cpp (GGUF 모델)
- 동시 요청 많은 서빙, 처리량 우선 → vllm-metal (MLX 모델)
Docker 없이 GPU 쓰는 대안 4가지
1. PyTorch MPS — 가장 표준
PyTorch는 Metal Performance Shaders(MPS) 백엔드를 통해 GPU 가속을 제공. MPS 프레임워크가 각 Metal GPU 패밀리에 최적화된 커널 제공
import torch
if torch.backends.mps.is_available():
device = torch.device("mps")
x = torch.ones(1, device=device)
print(x) # tensor([1.], device='mps:0')
2. Apple MLX — Apple Silicon 전용 최고 성능
MLX는 PyTorch MPS 대비 트랜스포머 기반 LLM 추론에서 lazy evaluation과 통합 메모리 활용으로 크게 우위. 단 전통적 CNN은 PyTorch MPS가 약간 더 빠름
pip install mlx mlx-lm
python -m mlx_lm.generate --model mlx-community/Mistral-7B-Instruct-v0.3-4bit --prompt "안녕"
3. Ollama — 가장 간단한 로컬 LLM
macOS에서 Ollama는 자동으로 Metal GPU를 감지하고 사용합니다. 별도 설정 없이.
brew install ollama
ollama serve
ollama run llama3.2
관련 글: Ollama에 Hugging Face GGUF 모델 등록하기 (411)
4. Colima + krunkit (실험적)
Colima 0.7+는 krunkit VM 타입으로 AI 워크로드용 GPU 가속을 일부 지원합니다.
colima start --vm-type=krunkit --cpu 4 --memory 8
관련 글: Colima 사용법 완벽 가이드 (415)
Intel Mac vs Apple Silicon Mac 차이 (2026)
| 항목 | Intel Mac | Apple Silicon Mac (M1~M4) |
|---|---|---|
| Docker 컨테이너 GPU | ❌ PCIe 패스스루 불가 | ❌ Metal 패스스루 불가 |
| Docker Model Runner | ⚠️ 제한적 (CPU/Vulkan) | ✅ Metal GPU 자동 |
| PyTorch MPS | ❌ (Metal 미지원 칩) | ✅ |
| Apple MLX | ❌ Apple Silicon 전용 | ✅ |
| Ollama Metal | ❌ (CPU 모드) | ✅ 자동 |
| 권장 사용 | 학습은 클라우드로 | 로컬 GPU 가능 |
현실: 2026년 머신러닝/LLM 워크로드를 맥에서 돌릴 거라면 Apple Silicon이 사실상 필수입니다.
클라우드 GPU 대안 (학습용)
학습이나 대용량 추론이 필요하면 로컬보다 클라우드 GPU가 효율적입니다.
| 플랫폼 | 특징 | 시간당 비용 (대략) |
|---|---|---|
| AWS EC2 (g5/p4) | A10G, A100 옵션 | $1~$32 |
| GCP Vertex AI | TPU + GPU | $0.5~$25 |
| Lambda Labs | A100, H100 단가 저렴 | $1.1~$2.5 |
| RunPod | Spot 인스턴스로 저렴 | $0.3~$2 |
| MetalCloud | M3 Ultra 512GB 통합 메모리 | £0.40~ |
로컬에서 코드 작성·디버깅 → 학습은 클라우드로 떠넘기는 게 2026 표준 워크플로.
자주 발생하는 오류
Error: NVIDIA Container Toolkit not available 메시지
macOS에는 NVIDIA Container Toolkit이 존재하지 않습니다. --gpus all 옵션은 Linux/Windows WSL2 전용. macOS는 Docker Model Runner 사용.
docker model run이 인식 안 될 때
Docker Desktop 버전 확인. 4.40 미만이면 Model Runner 미포함. 4.62+ 가 vllm-metal 지원 권장.
docker --version
# Docker version 27.x+ 권장
vllm-metal이 모델을 못 찾을 때
mlx-community/* 모델만 vllm-metal로 라우팅됩니다. 일반 GGUF는 자동으로 llama.cpp 백엔드로 fallback.
MPS에서 메모리 부족(OOM)이 발생할 때
Apple Silicon은 통합 메모리라 시스템 메모리가 GPU 메모리이기도 합니다. 다른 앱(Chrome, Slack 등) 종료. PyTorch의 경우 torch.mps.empty_cache() 호출.
컨테이너에서 호스트의 Model Runner API에 접근 안 될 때
# 호스트 TCP 포트 활성화
docker desktop enable model-runner --tcp=12434
# 컨테이너에서는 host.docker.internal:12434 로 접근
자주 묻는 질문 (FAQ)
Q. 2026년 현재 macOS Docker 컨테이너 내부에서 GPU를 직접 쓸 수 있나요?
A. 여전히 불가능합니다. macOS의 가상화 구조상 Metal GPU를 게스트 VM에 노출하는 공식 API가 없습니다. 다만 Docker Model Runner는 모델 실행 프로세스를 호스트에서 직접 구동하는 방식으로 이 한계를 우회하여 GPU 가속을 제공합니다.
Q. Docker Model Runner와 Ollama 중 뭘 써야 하나요?
A. Docker 워크플로/OpenAI 호환 API/Anthropic API 호환이 필요하면 Docker Model Runner. 단순 로컬 LLM 실험과 Modelfile 기반 워크플로면 Ollama가 더 간단합니다.
Q. PyTorch에서 device='cuda'를 device='mps'로 바꾸면 그냥 작동하나요?
A. 대부분 작동하지만 일부 연산자가 아직 MPS에 구현 안 되어 있을 수 있습니다. PYTORCH_ENABLE_MPS_FALLBACK=1 환경 변수로 CPU fallback 활성화 가능.
Q. MLX와 PyTorch MPS는 어느 게 빠른가요?
A. LLM 추론은 MLX가, CNN은 PyTorch MPS가 약간 우세하다는 보고가 일반적입니다. MLX는 통합 메모리·lazy evaluation·zero-copy를 적극 활용해 대형 LLM에서 차이가 큽니다.
Q. Docker Desktop 대신 Colima에서 Model Runner를 쓸 수 있나요?
A. Docker Model Runner는 Docker Desktop 종속입니다. Colima는 별도로 krunkit VM이나 호스트 네이티브 Ollama/MLX 사용을 권장.
Q. Intel Mac에서도 Metal GPU를 쓸 수 있나요?
A. Intel Mac은 Apple Silicon이 아니라 Metal MPS 지원이 매우 제한적입니다. 학습은 클라우드, 추론은 CPU 또는 Apple Silicon 맥북으로의 업그레이드를 권장합니다.
Q. CUDA 코드를 Mac에서 그대로 돌릴 방법은?
A. 직접 실행은 불가. 옵션 두 가지: (1) PyTorch는 MPS로 포팅 (대부분 자동) (2) ZLUDA 같은 호환 레이어는 Mac에서 지원 안 됨. 결국 NVIDIA GPU 필요한 작업은 클라우드 사용.
Q. Apple Neural Engine(ANE)은 Docker에서 쓸 수 있나요?
A. 2026.05 기준 직접 접근 API가 공개되지 않아 Docker는 물론 PyTorch에서도 직접 사용 불가. CoreML 모델만 ANE 활용 가능.
'Programming > 환경셋팅' 카테고리의 다른 글
| Ollama에 Hugging Face GGUF 모델 등록·실행하기 (2026) — 직접 실행 vs Modelfile 비교 가이드 (0) | 2026.05.15 |
|---|---|
| Godaddy + Certbot으로 와일드카드 SSL 인증서 자동 갱신하기 (0) | 2025.03.06 |
| 개발자용 폰트2 - NERD Font - D2Coding NERD FONT (2) | 2025.02.18 |
| 무료 SSL 인증서: certbot 사용하기 (2) | 2024.01.04 |
| neo-vim 설치 - CoC, Python - 실시간자동완성 적용 (3) | 2023.05.27 |
댓글