20분
Why: Docker가 해결하는 3가지 문제
Docker 배포 & 테스트
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을 두 번 실행하면 같은 이미지로 두 컨테이너가 독립적으로 실행된다'는 주장이 맞는지 검증해줘. 틀린 부분이 있으면 교정해줘.
이 팁이 도움이 됐나요?