
Dockerλ κ²½λνλκ³ ν΄λ κ°λ₯νλ©° μΌκ΄λ νκ²½μμ μ ν리μΌμ΄μ μ μ€νν μ μλλ‘ λμμ£Όλ μ€ν μμ€ μ»¨ν μ΄λ νλ«νΌμ΄λ€.
μ½κ² λ§ν΄,
βκ°λ°μκ° λ§λ νκ²½ κ·Έλλ‘ μ΄λμμλ μ€νλλλ‘ ν΄μ£Όλ κΈ°μ β
μ ν리μΌμ΄μ νκ²½ μΌκ΄μ± μ μ§ λ° μ΄μμ± ν보
| λΆλ₯ | μ€λͺ | μμ |
|---|---|---|
| Portability (μ΄μμ±) | νκ²½μ΄ λ¬λΌλ λμΌνκ² μ€νλ¨ | λ‘컬 β ν μ€νΈ μλ² β ν΄λΌμ°λ μ ν |
| Efficiency (ν¨μ¨μ±) | VMλ³΄λ€ ν¨μ¬ κ°λ²Όμ | 컀λ 곡μ β λ©λͺ¨λ¦¬ μ¬μ© μ μ |
| Consistency (μΌκ΄μ±) | μ€ν νκ²½ μ체λ₯Ό ν¨ν€μ§ | βνκ²½ μ°¨μ΄λ‘ μ€λ₯ λ°μβ ν΄κ²° |
| Scalability (νμ₯μ±) | μ¬λ¬ 컨ν μ΄λλ‘ μμ½κ² νμ₯ κ°λ₯ | λ§μ΄ν¬λ‘μλΉμ€ / Kubernetes |
| Speed (μλ) | μ μ΄ λ΄ μ€ν | VM λλΉ λ§€μ° λΉ λ₯Έ κΈ°λ μλ |
컨ν μ΄λλ₯Ό μ€ννκ³ κ΄λ¦¬νλ ν΅μ¬ μμ§
ꡬμ±:
μ ν리μΌμ΄μ μ€νμ νμν μ½λ, λΌμ΄λΈλ¬λ¦¬ λ±μ ν¬ν¨νλ μ½κΈ° μ μ©μ μ μ μν
μ΄λ―Έμ§λ₯Ό κΈ°λ°μΌλ‘ μ€ν μ€μΈ μν, μ¦ μ΄λ―Έμ§μ μ€ν μΈμ€ν΄μ€
μ΄λ―Έμ§λ₯Ό λ§λλ λ μνΌ(script)
#requirements.txt
flask==2.3.2
# 컨ν
μ΄λκ° μ¬μ©ν κΈ°λ³Έ νκ²½(Base Image)μ μ€μ . `python:3.13-slim` μ΄λ―Έμ§λ₯Ό μ¬μ©νμ¬ κ°λ²Όμ΄ νμ΄μ¬ μ€ν νκ²½μ κΈ°λ°
FROM python:3.13-slim
# 컨ν
μ΄λ λ΄λΆμμ λͺ
λ Ήμ΄κ° μ€νλ μμ
λλ ν 리λ₯Ό `/app`μΌλ‘ μ€μ
μ΄ν λͺ
λ Ήλ€μ λͺ¨λ `/app` κ²½λ‘ κΈ°μ€μΌλ‘ μνλ©λλ€.
WORKDIR /app
#νμ¬ λ‘컬 νλ‘μ νΈ ν΄λ(`.`)μ λͺ¨λ νμΌμ 컨ν
μ΄λ λ΄λΆ `/app` ν΄λμ 볡μ¬
COPY . /app
# `requirements.txt` νμΌμ μ μλ Python ν¨ν€μ§λ₯Ό μ€μΉν©λλ€.
# `--no-cache-dir` : μ€μΉ κ³Όμ μμ μμ±λλ μΊμ νμΌμ μ μ₯νμ§ μμ μ΄λ―Έμ§ μ©λ κ°μ ν¨κ³Ό
# μ ν리μΌμ΄μ
μ€νμ νμν λΌμ΄λΈλ¬λ¦¬λ₯Ό μ€λΉ
RUN pip install --no-cache-dir -r requirements.txt
# 컨ν
μ΄λ μμμ μ ν리μΌμ΄μ
μ΄ μ¬μ©ν ν¬νΈκ° `5000`μμ Dockerμκ² μλ €μ€λλ€.
# > μ°Έκ³ : μ€μ μΈλΆ μ μμ `docker run -p 5000:5000` λͺ
λ ΉμΌλ‘ λ§€νν΄μΌ ν¨
EXPOSE 5000
# 컨ν
μ΄λκ° μ€νλ λ μλμΌλ‘ μ€νλλ κΈ°λ³Έ λͺ
λ Ήμ
λλ€.
# `python app.py` λ₯Ό μλ―Ένλ©°, μ ν리μΌμ΄μ
μ μμμ
CMD ["python", "app.py"]
| Dockerfile λͺ λ Ή | μν |
|---|---|
FROM | μ€ν νκ²½(λ² μ΄μ€ μ΄λ―Έμ§) μ€μ |
WORKDIR | μμ λλ ν 리 μ€μ |
COPY | μμ€ μ½λ 컨ν μ΄λ λ΄λΆλ‘ λ³΅μ¬ |
RUN | λΌμ΄λΈλ¬λ¦¬ μ€μΉ |
EXPOSE | 컨ν μ΄λμμ μ¬μ©νλ ν¬νΈ μ 보 μ 곡 |
CMD | 컨ν μ΄λ μ€ν μ μ€νν κΈ°λ³Έ λͺ λ Ή μ€μ |
μ¬λ¬ κ°μ 컨ν
μ΄λλ₯Ό ν λ²μ μ€ν/κ΄λ¦¬νκΈ° μν λꡬ
κ΅¬μ± νμΌ: docker-compose.yml
μ΄λ―Έμ§λ₯Ό 곡μ /λ°°ν¬ν μ μλ ν΄λΌμ°λ κΈ°λ° λ μ§μ€νΈλ¦¬
| λΆμΌ | νμ© μ΄μ |
|---|---|
| κ°λ° & ν μ€νΈ νκ²½ ν΅μΌ | νκ²½ μ°¨μ΄ μ κ±°λ‘ νμ ν₯μ |
| λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ² | μλΉμ€λ³ λ 립 λ°°ν¬ λ° νμ₯ |
| CI/CD νμ΄νλΌμΈ μλν | ν μ€νΈ & λ°°ν¬ μλν |
| λ©ν°/νμ΄λΈλ¦¬λ ν΄λΌμ°λ μ΄μ | μ¬λ¬ ν΄λΌμ°λμμ λμΌ νκ²½ μ€ν |
| λκ·λͺ¨ λ°μ΄ν° μ²λ¦¬ & AI | Spark, ML νλ«νΌ νκ²½ κ΅¬μ± μλν |
docker build -t my-app .
docker run -d -p 8080:80 my-app
docker push my-app
| κ°λ | ν΅μ¬ μ€λͺ |
|---|---|
| Docker | μ΄λμλ λμΌνκ² μ€ν κ°λ₯ν νκ²½ μ 곡 |
| Image | μ€ν νκ²½ ν¬ν¨λ ν¨ν€μ§ (ν νλ¦Ώ) |
| Container | μ€ν μ€μΈ μ ν리μΌμ΄μ |
| Dockerfile | μ΄λ―Έμ§ μμ± λ μνΌ |
| Compose | μ¬λ¬ 컨ν μ΄λ κ΄λ¦¬ |
| Hub | μ΄λ―Έμ§ 곡μ μ μ₯μ |
Dockerλ νκ²½ ν΅μΌ + νμ₯μ± + μ΄μμ±