4. 프로비저닝(Provisioning)과 Dockerfile

박은서's avatar
May 01, 2026
4. 프로비저닝(Provisioning)과 Dockerfile

1. 프로비저닝(Provisioning)과 Dockerfile

1️⃣ 프로비저닝(Provisioning)이란?

“컴퓨터 환경을 자동으로 준비하는 것”
  • 프로그램을 실행하려면 미리 준비되어야 하는 게 있음
    • 운영체제(OS)
    • 라이브러리
    • 설정
    • 데이터베이스 등
➡️ 이걸 사람이 직접 하나씩 설치하는 게 아니라 자동으로 만들어주는 과정

2️⃣ 도커 프로비저닝

1) 개념

  • 도커를 이용해서 실행 환경을 자동으로 만드는 것
“프로그램이 돌아가는 환경을 도커로 자동 세팅하는 과정”

2) 핵심 구성요소 3가지

① 이미지 (Image)
  • 실행 환경의 설계도
  • 어떤 OS, 어떤 프로그램, 어떤 설정을 사용할 건지 모두 정의됨
  • 비유: 레시피
② 컨테이너 (Container)
  • 실제 실행되는 프로그램 환경
  • 이미지를 기반으로 생성됨
  • 비유: 요리된 음식
③ Dockerfile
  • 이미지를 만드는 설명서
  • 어떤 걸 설치하고, 어떤 설정을 할지를 코드로 작성

3) 전체 흐름 (중요 ⭐)

Dockerfile 작성 ↓ 이미지 생성 (build) ↓ 컨테이너 실행 (run)
➡️ 이 과정 전체가 도커 프로비저닝

4) 왜 도커 프로비저닝을 쓰는가?

  • 환경 차이 문제 해결
    • “내 컴퓨터에서는 되는데?” 문제 해결
  • 빠른 세팅
    • 새 개발자도 바로 실행 가능
  • 자동화
    • 서버 구축을 사람이 안 해도 됨
  • 재현 가능
    • 언제든 같은 환경 다시 만들 수 있음

5) 기존 방식 vs 도커

구분
기존 방식
도커
설치
수동
자동
환경 차이
없음
재현성
낮음
높음
시간
오래 걸림
빠름

6) 실제 사용 예시 (웹사이트 실행)

기존 방식
  • Python 설치
  • 라이브러리 설치
  • DB 설치
  • 설정 맞추기
    • ➡️ 매우 번거로움
도커 방식
  • docker run 한 줄
    • ➡️ 끝

3️⃣ Dockerfile

1) Dockerfile이란?

  • 도커 이미지를 만드는 “설명서”
  • 어떤 환경을 만들지, 어떤 프로그램을 설치할지, 어떻게 실행할지를 코드로 적어놓은 파일
“컨테이너를 만들기 위한 레시피”

2) 왜 필요할까?

  • 매번 환경을 수동으로 만들 필요 없음
  • 사람이 하는 작업(OS 설치, 프로그램 설치, 설정 변경)을 Dockerfile이 대신 자동화

3) 전체 흐름 (복습)

Dockerfile 작성 ↓ docker build → 이미지 생성 ↓ docker run → 컨테이너 실행
  • Dockerfile은 출발점

4) 기본 구조 (중요 ⭐)

FROM python:3.9 WORKDIR /app COPY . . RUN pip install -r requirements.txt CMD ["python", "app.py"]

5) 핵심 명령어 설명

① FROM
  • 시작 환경 지정
  • 어떤 OS + 기본 환경 사용할지
    • FROM python:3.9
      ➡️ 파이썬이 설치된 환경에서 시작
② WORKDIR
  • 작업 폴더 설정
  • 컨테이너 내부의 cwd를 지정
    • cwd(Current Working Directory) : 현재 작업 디렉토리 (현재 위치)
    • WORKDIR /app
      ➡️ “앞으로 /app 폴더에서 작업”
③ COPY
  • 파일 복사
COPY . .
➡️ “내 컴퓨터 파일을 컨테이너로 복사”
④ RUN
  • 명령 실행 (설치 등)
RUN pip install -r requirements.txt
➡️ “필요한 라이브러리 설치”
⑤ CMD
  • 컨테이너 실행 시 실행할 명령
CMD ["python", "app.py"]
➡️ “컨테이너 시작하면 app.py 실행”
⑥ ENV
  • 컨테이너에서 사용할 환경변수(Environment Variable) 를 설정하는 명령어
  • 애플리케이션 실행 시 필요한 설정값을 코드가 아니라 외부에서 주입할 때 사용
ENV 변수명=값 ENV 변수1=값1 변수2=값2
  • 특징
    • 이미지 빌드 시점 + 컨테이너 실행 시 모두 유지됨
    • Dockerfile 내부에서도 사용 가능
    • 컨테이너 실행 시 override 가능
💡
서비스명처럼 실행 환경에 따라 달라지는 값은 Dockerfile이 아니라 docker-compose에서 환경변수로 설정한다.
꼭 Dockerfile에서 변수를 설정하고 싶으면 진짜 IP를 적어야 한다.
명령어 요약
명령어
역할
FROM
시작 이미지
COPY
파일 복사
RUN
설치/명령 실행
CMD
실행 명령
WORKDIR
작업 폴더

6) 핵심 개념 3가지 (중요 ⭐)

① 위에서 아래로 실행됨
  • 순서 중요
  • 한 줄씩 차례대로 실행
② 이미지 = 층(layer) 구조
  • 각 명령어가 하나의 레이어
  • 변경된 부분만 다시 빌드됨
③ 자동화된 환경 생성
  • 누구나 동일한 환경 사용 가능

7) 비유로 이해하기

개념
비유
Dockerfile
요리 레시피
Image
완성된 요리
Container
실제 먹는 음식
Share article