inblog logo
|
DailyCoding
    Docker

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

    박은서's avatar
    박은서
    May 01, 2026
    4. 프로비저닝(Provisioning)과 Dockerfile
    Contents
    1. 프로비저닝(Provisioning)과 Dockerfile1️⃣ 프로비저닝(Provisioning)이란?2️⃣ 도커 프로비저닝3️⃣ 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
    Contents
    1. 프로비저닝(Provisioning)과 Dockerfile1️⃣ 프로비저닝(Provisioning)이란?2️⃣ 도커 프로비저닝3️⃣ Dockerfile

    DailyCoding

    RSS·Powered by Inblog