Engineering/AI

Docker LLM 설치하기 w/Ollama

망고v 2025. 12. 29. 12:50

지난 번에 Ollama에서 제공하는 기본 프로그램을 다운로드받아 gpt-oss-20b 모델을 macOS에서 실행시켜봤다. 향후 확장성을 고려하여 이번에는 Docker로 실행해보고 무슨 차이가 있는지 알아보자.

 

https://dev-tobe.tistory.com/29

 

로컬(macOS) LLM 설치하기 w/Ollama

LLM 중에 OpenSource 형태로 모델들이 꽤나 제공되기도 하고, 매번 CSP에서 제공하는 서비스만 사용하다가 호기심이 생겨 로컬환경에 LLM을 설치하고 사용해보기로 한다. MacBook의 Silicon Chip에 Memory가 1

dev-tobe.tistory.com

 

설치하기

Ollama Container 설치

공개된 Docker Image는 아래와 같다. 로컬환경으로 가져와서 실행해보자.

https://hub.docker.com/r/ollama/ollama

 

ollama/ollama - Docker Image

 

hub.docker.com

어느 정도 예상은 했지만, Size가 작진 않다. Model은 별도 다운로드가 필요할텐데, 시간이 다소 필요할 것 같다.

mango@mac docker % docker pull ollama/ollama:latest
latest: Pulling from ollama/ollama
f40883caaaf0: Pull complete
a52347580066: Pull complete
97dd3f0ce510: Pull complete
c1dfee40b69c: Pull complete
d198c88e1cff: Download complete
Digest: sha256:2c9595c555fd70a28363489ac03bd5bf9e7c5bdf2890373c3a830ffd7252ce6d
Status: Downloaded newer image for ollama/ollama:latest
docker.io/ollama/ollama:latest

mango@mac docker % docker images
IMAGE                           ID             DISK USAGE   CONTENT SIZE   EXTRA
ollama/ollama:latest            2c9595c555fd       8.57GB         3.12GB

mango@mac ~ % docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
4146ef267745b5d679490ecfab222109d7dbd48f9ffb88dffdb60430e6fd13c2

mango@mac ~ % docker ps
CONTAINER ID   IMAGE           COMMAND               CREATED          STATUS          PORTS                                             NAMES
4146ef267745   ollama/ollama   "/bin/ollama serve"   42 seconds ago   Up 42 seconds   0.0.0.0:11434->11434/tcp, [::]:11434->11434/tcp   ollama

 

일단 위와 같이 Docker Container를 실행시킨 상태에서 모델을 호출하면 아래와 같이 'not found' 오류가 발생한다.

mango@mac ~ % curl --location 'http://localhost:11434/api/show' \
--header 'Content-Type: application/json' \
--data '{
    "name": "gpt-oss:20b",
    "verbose": true
}'
{"error":"model 'gpt-oss:20b' not found"}

 

gpt-oss-20b 모델 설치

아래와 같이 설치하다가 마지막 단계에서 메모리 부족 오류가 발생했다. docker desktop의 자원 부족 이슈로 확인되어 설정을 변경하자.

mango@mac ~ % docker exec -it ollama ollama run gpt-oss:20b
pulling manifest
pulling e7b273f96360: 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  13 GB
pulling fa6710a93d78: 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 7.2 KB
pulling f60356777647: 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  11 KB
pulling d8ba2f9a17b3: 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏   18 B
pulling 776beb3adb23: 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  489 B
verifying sha256 digest
writing manifest
success
Error: 500 Internal Server Error: model requires more system memory (13.1 GiB) than is available (2.0 GiB)

 

Memory Limit을 기존(7.9GB)에서 16GB로 증가시켰다. 이 후, Container를 실행하면 위 Error는 해결된다.

 

테스트

이제는 /api/show API 호출시 gpt-oss:20b 모델에 대한 정보가 출력된다.

mango@mac ~ % curl --location 'http://localhost:11434/api/show' \
--header 'Content-Type: application/json' \
--data '{
    "name": "gpt-oss:20b"
}'
{"license":"\n                                 Apache License
..생략..
"capabilities":["completion","tools","thinking"],"modified_at":"2025-12-29T02:46:51.674487008Z"}

 

간단한 질문을 아래와 같이 수행하니 정상적으로 답변도 잘 받는 것이 확인된다.

mango@mac ~ % curl --location 'http://localhost:11434/api/generate' \
--header 'Content-Type: application/json' \
--data '{
    "model": "gpt-oss:20b",
    "prompt": "Ollama를 Docker로 기동할 때의 장점은?",
    "stream": false
}'
{"model":"gpt-oss:20b","created_at":"2025-12-29T03:04:15.199866378Z","response":"## Ollama를 Docker로 실행할 때의 주요 장점\n\n| # | 장점 | 구체적 설명 |\n|---|------|-------------|\n| 1 | **환경 일관성(Reproducibility)** | Docker 이미지에 모든 의존성(라이브러리, CUDA, cuDNN 등)이 포함돼 있어 “작동하던 환경이 어디서나 동일하게 재현”됩니다. \u003cbr\u003e→ 개발 → 테스트 → 프로덕션 환경을 동일하게 유지할 수 있습니다. |\n| 2 | **쉽고 빠른 배포** |
..생략..
"total_duration":249735017072,"load_duration":190740125,"prompt_eval_count":82,"prompt_eval_duration":516633209,"eval_count":1240,"eval_duration":248598484287}

 

 

자원사용량

실제 메모리의 자원 사용량은 지난 Ollama 프로그램을 실행했을 때와 유사하다. 다만, docker desktop에 Memory Limit 설정을 16GB로 올려놔서 점유된 메모리는 실사용량(약 13GB) 대비 큰 상황이다. CPU의 경우, Container 실행시 GPU에 대한 설정이 없어 그런가 처리 속도도 더딘 점이 발견되었다.

Container Stat

 

CPU

메모리

 

 

결론

Ollama를 활용하여 로컬환경에서 gpt-oss-20b 모델을 동작시키는 것은 Container 방식이든 Ollama Native App이든 가능하다. 다만, MacBook의 GPU까지 활용하려면 현재는 Ollama Native App만 가능하다. Container 방식에서의 GPU 가속은 Linux 기반의 Host에서만 가능하다고 하니, 이 점 참고하자. (macOS에서의 Ollama Docker Container ByeBye~)

'Engineering > AI' 카테고리의 다른 글

Open WebUI 설치 w/AKS  (0) 2026.01.06
vLLM 설치 w/AKS  (0) 2026.01.05
vLLM 설치 및 실행 w/macOS  (0) 2025.12.29
로컬(macOS) LLM 설치하기 w/Ollama  (0) 2025.12.24