티스토리 뷰

https://hub.docker.com/_/docker

 

docker - Official Image | Docker Hub

Docker Official Images are a curated set of Docker open source and drop-in solution repositories. Why Official Images? These images have clear documentation, promote best practices, and are designed for the most common use cases.

hub.docker.com

Docker은 개발의 결과물이 여러 가지 환경(로컬 환경, 운영 환경) 차이에서 발생하는 문제를 제거하는 컨테이너 기반의 오픈소스 가상화 플랫폼입니다. 

 

기존 클라우드 환경에서 서버를 관리했던 VM 환경은 리소스가 많이 소모되고 대규모 관리가 어려웠던 단점이 존재했습니다. 이러한 단점을 보완하기 위해 나온 것이 Docker입니다. Docker은 프로그램이 작동되기 위한 최소한의 조건만을 가상화하는 역할을 합니다. 즉, 같은 코드가 내 로컬에서는 작동하는데 서버에서는 작동이 안 되는 상황을 해결시켜 주는 것입니다.

 

1. Docker의 기본 단위 : 이미지 (Image)

환경 제약 없이 어느 환경에서나 코드가 작동하기 위해서는 최소 조건이 필요합니다. 그 조건을 명시한 파일이 docker file입니다. docker file은 설치할 패키지, 복사할 파일, 실행 명령 등을 정의한 텍스트 파일입니다. 정리하자면, docker file은 컨테이너 이미지를 만드는 설계도입니다.

Docker Image는 실행 환경과 코드가 포함된 애플리케이션 템플릿입니다. 따라서 dockerfile은 프로젝트에서 사용한 각 구성 요소를 설명해 주는 파일입니다.

 

2. dockerfile 예시

아래 dockerfile은 VOD 추천시스템 웹 페이지 구현에 대한 예시입니다.

  • BackEnd : Flask
  • DB : MYSQL
  • FrontEnd : HTML, CSS, JavaScript

1) 베이스 이미지 설정

FROM python:3.10-slim

python:3.10-slim 이미지를 기반으로 컨테이너를 시작

 

2) 환경변수 설정

ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV RESET_DB=False
  • 불필요한 파일 제거
  • 로그를 실시간으로 출력
  • 사용자 정의 환경 변수 : RESET_DB가 TRUE이면 기존 DB를 삭제하고 재생성, FALSE이면 DB를 그대로 유지

3) 작업 디렉토리 설정

WORKDIR /app

이후 명령어들이 실행될 기본 작업 디렉터리를 /app으로 설정

계층 구조가 명확한 프로젝트 구조를 위해 필수적인 설정

 

4) 의존성 설치

COPY requirement.txt .
RUN pip install --upgrade pip && pip install -r requirement.txt

pip freeze로 개발 환경에서 필요한 라이브러리를 최신 pip으로 업그레이드 후 설치

의존성 설치는 코드 변경보다는 자주 발생하지 않으므로, 캐시 레이어를 최대한 활용하기 위해 COPY -> RUN 순서를 분리

 

5) 애플리케이션 및 데이터 복사

COPY . /app
COPY db_data.csv /app/db_data.csv

현재 로컬 디렉토리의 모든 파일 내용을 컨테이너 /app으로 복사

특정 csv 파일도 명시적으로 경로를 지정하여 복사

 

6) 데이터베이스 폴더 생성

RUN mkdir -p /app/db

컨테이너 이미지 빌드 시점에 /app/db 디렉터리를 생성

data을 적재한 db 파일의 저장 경로로 활용

 

7) 포트 노출

EXPOSE 5000

Flask에서 설정한 포트 번호를 외부와 연결할 수 있도록 명시

 

8) 컨테이너 실행 명령

CMD ["python", "app.py"]

컨테이너가 실행될 때 수행할 기본 명령 지정

app.py 파일을 실행

 

3. Image 빌드

Image 빌드는 작성한 dockerfile의 명령어들을 순서대로 실행하여, 실행 가능한 애플리케이션 환경을 Image라는 하나의 파일로 패키징 하는 것을 의미합니다.

# image build 명령어
docker build -t image 이름 .

이미지를 빌드하면, 어디서나 동일한 실행 환경을 보장할 수 있고, 이미지 자체를 배포하거나 클라우드에 올리기 쉽습니다.

 

정리하자면,

  • dockerfile : 요리 레시피
  • docker build -t image 이름 : 레시피대로 요리를 만드는 과정
  • image : 완성된 요리

'Docker & AWS' 카테고리의 다른 글

[Docker 3] Docker Compose  (0) 2025.07.05
[Docker 2] Container  (0) 2025.07.02
TAG more
글 보관함
최근에 올라온 글