dev.Log

conda vs venv vs Docker 본문

인공지능

conda vs venv vs Docker

초코푸딩 2026. 1. 2. 14:13

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 쓰지 마라”는 말은
경험에서 나온 교훈이다.

Comments