20

Why: Docker가 해결하는 3가지 문제

Docker 배포 & 테스트

학습 목표

Docker가 해결하는 핵심 문제 3가지를 설명할 수 있다 Docker 이미지와 컨테이너의 차이를 안다 Docker Compose의 역할을 이해한다

Docker가 해결하는 3가지 문제

문제 1: 환경 차이

개발자 A: Python 3.11, macOS, arm64
개발자 B: Python 3.10, Windows, x86_64
서버: Python 3.9, Ubuntu, x86_64

같은 코드인데 다르게 동작한다!

Docker 해결: 모든 환경에서 동일한 컨테이너 실행

문제 2: 의존성 충돌

프로젝트 A: langchain==0.1.0
프로젝트 B: langchain==0.2.0

같은 컴퓨터에서 둘 다 실행하려면?

Docker 해결: 각 프로젝트가 독립된 컨테이너

문제 3: 설치 복잡도

우리 시스템에 필요한 것:
- Python 3.11+
- OpenAI API 키
- ChromaDB (+ SQLite 3.35+)
- Neo4j 5.x
- Streamlit

설치 가이드: 3페이지...

Docker 해결: docker compose up (1줄)

핵심 개념

이미지 vs 컨테이너

이미지 (Image) = 설계도
  - Dockerfile로 정의
  - 빌드 시점에 생성
  - 읽기 전용
  - 예: ubuntu:22.04, python:3.12-slim

컨테이너 (Container) = 실행 중인 인스턴스
  - 이미지를 기반으로 생성
  - 실행 시점에 생성
  - 읽기/쓰기 가능
  - 예: my-app-1, my-neo4j-1
비유:
  이미지 = 쿠키 틀
  컨테이너 = 구워진 쿠키

  하나의 틀(이미지)로 여러 쿠키(컨테이너)를 만들 수 있다.

Docker Compose

단일 컨테이너:
  docker run my-app          # 앱만 실행
  docker run neo4j           # Neo4j 따로 실행

Docker Compose:
  docker compose up          # 앱 + Neo4j 한번에 실행!

docker compose.yml:
  services:
    app: ...      # Streamlit 앱
    neo4j: ...    # Neo4j 데이터베이스

Docker Compose = 여러 컨테이너를 한번에 관리하는 도구

AI로 학습하기 — 꿀팁
Docker 이미지·컨테이너 구분 검증AI 학습 팁

Docker 이미지와 컨테이너의 차이에 대한 설명이 정확한지, 흔한 오해가 포함되지 않았는지 검증하세요.

Docker 학습 자료에서 '이미지는 실행 가능한 패키지이고 컨테이너는 이미지의 실행 인스턴스'라고 설명한다. 이 정의가 정확한지, 그리고 'docker run을 두 번 실행하면 같은 이미지로 두 컨테이너가 독립적으로 실행된다'는 주장이 맞는지 검증해줘. 틀린 부분이 있으면 교정해줘.
이 팁이 도움이 됐나요?