dev.Log
conda vs venv vs Docker 본문
Python 환경 관리, 언제 무엇을 써야 할까?
Python 프로젝트를 하다 보면 반드시 마주치는 질문이 있다.
“conda, venv, Docker 중에 뭐가 정답인가요?”
결론부터 말하면 정답은 하나가 아니다.
용도에 따라 “써야 할 도구”가 완전히 다르다.
이 글에서는
연구 / 개발 / 서버 운영 관점에서
conda, venv, Docker를 명확하게 비교해본다.
1. venv — Python 표준 가상환경
개념
venv는 Python 공식 표준 가상환경이다.
Python 패키지(pip)만 격리하고, OS 라이브러리는 그대로 사용한다.
python3 -m venv venv source venv/bin/activate pip install requests
특징
- Python 패키지만 관리
- 시스템 Python과 분리
- 매우 가볍고 빠름
장점
- 서버/CI/CD에서 안정적
- Docker와 궁합이 좋음
- 디버깅과 배포가 단순
단점
- CUDA, MKL 같은 시스템 라이브러리는 직접 해결해야 함
- numpy / torch에서 라이브러리 충돌이 날 수 있음
언제 쓰나?
- REST API 서버
- FastAPI / Flask
- Jenkins, cron, 배치 작업
- 운영 환경
서버용 Python의 정석
2. conda — Python + 시스템 라이브러리 관리자
개념
conda는 단순한 Python 가상환경이 아니다.
Python뿐 아니라 C/C++ 라이브러리까지 함께 관리한다.
conda create -n ml python=3.10 numpy pytorch conda activate ml
특징
- libc, libstdc++, MKL, CUDA까지 포함
- 환경 재현이 쉬움 (연구 기준)
장점
- numpy / scipy / pytorch 설치 안정적
- CUDA, OpenMP 충돌 해결 쉬움
- 연구/실험 환경에 매우 강력
단점 (중요)
- 무겁고 느림
- 환경 크기 큼
- LD_LIBRARY_PATH 오염 가능
- systemd, Jenkins, cron과 궁합 나쁨
운영 서버에서 문제가 되는 이유
- conda activate 안 되면 서비스 실행 실패
- 서버 부팅/재시작 시 환경 깨짐
- 다른 서비스와 라이브러리 충돌
언제 쓰나?
- ML 연구 서버
- 실험용 GPU 머신
- Jupyter Notebook
- 개인 워크스테이션
ML 연구에서는 왕, 운영 서버에서는 애물단지
3. Docker — 환경 격리의 끝판왕
개념
Docker는 Python만 격리하는 게 아니라
OS부터 실행 환경 전체를 패키징한다.
FROM python:3.10 RUN pip install fastapi COPY app.py . CMD ["python", "app.py"]
특징
- OS 레벨 격리
- 완벽한 재현성
- 배포 단위 표준
장점
- 서버 간 환경 차이 제거
- CI/CD 자동화에 최적
- Kubernetes 필수 요소
- GPU 서빙에도 적합
단점
- 초기 학습 비용
- 디버깅이 상대적으로 번거로움
- 로컬 개발엔 과한 경우도 있음
언제 쓰나?
- 운영 서버
- Kubernetes
- STT / RAG / LLM 서비스
- GPU 추론 서버
운영과 배포의 사실상 표준
4. Docker 안에서는 venv vs conda?
Docker + venv (추천)
RUN python -m venv /venv ENV PATH=/venv/bin:$PATH RUN pip install -r requirements.txt
- 이미지 크기 작음
- 빌드 빠름
- 운영 안정성 높음
Docker + conda (주의)
FROM nvidia/cuda:12.1-runtime RUN conda create -n app python=3.10
문제점:
- 이미지 수 GB
- 빌드 느림
- conda activate 관리 필요
PyTorch 공식 이미지 아닌 이상 거의 비추천
5. 한눈에 비교 표
항목venvcondaDocker
| 격리 범위 | Python | Python + C/C++ | OS 전체 |
| 무게 | 가벼움 | 무거움 | 중간~무거움 |
| 서버 운영 | ◎ | ✕ | ◎ |
| ML 연구 | △ | ◎ | ○ |
| CI/CD | ◎ | △ | ◎ |
| 재현성 | ○ | ○ | ◎ |
6. 실무 기준 선택 가이드
서버/AI 서비스 기준
상황추천
| API 서버 | venv |
| Jenkins 빌드 | venv |
| ML 실험 | conda |
| GPU 학습 | conda or PyTorch Docker |
| 운영 배포 | Docker + venv |
| Kubernetes | Docker |
결론
- venv: 서버와 배치의 정석
- conda: 연구와 실험의 치트키
- Docker: 운영과 배포의 종착지
“운영 서버에서 conda 쓰지 마라”는 말은
경험에서 나온 교훈이다.
'인공지능' 카테고리의 다른 글
| ML Docker 이미지 크기 줄이는 법 (0) | 2026.01.02 |
|---|---|
| 운영 서버에서 conda 쓰면 실제로 터지는 사례들 (0) | 2026.01.02 |
| Whisper vs NeMo (EPD) (0) | 2025.12.30 |
| 업스트림 / 다운스트림 뜻이 뭔데 개발자들이 굳이 이렇게 말할까? (0) | 2025.12.30 |
| Beam Search 쉽게 이해하기 (0) | 2025.12.30 |
Comments