Infra & Container/Docker

Docker - Introduction to Docker

Porits789 2024. 3. 18. 23:04

Docker Image 생성하기

1. Dockerfile 작성하기

도커 이미지를 생성하기 위해 Dockerfile을 작성해야한다. 간단한 작성 과정과 함께 사용되는 명령들을 정리한다.

FROM python:3.9

RUN pip install pandas

WORKDIR /app
COPY pipeline.py pipeline.py

ENTRYPOINT ["python", "pipeline.py"]

 

  • FROM: 기반이 되어주는 이미지를 선택한다. (docker-hub에 있음!!)
    > 내가 생성한 이미지는 python:3.9를 기본 이미지로 가져와 생성되는 이미지이다!
  • RUN: 이미지 생성시에 초기에 동작할 명령들을 입력한다.
    > pip를 사용해서 pandas 모듈을 설치!
  • WORKDIR: 작업할 디렉토리를 설정한다.
  • COPY: 로컬에서 docker에 복사할 파일을 정의한다.
  • ENTRYPOINT: 컨테이너 시작시에 실행되는 기본 명령을 정의한다.
    > python으로 pipeline.py를 실행하라는 뜻!! ENTRYPOINT에 추가로 인자전달을 위해서 docker 실행 시에 인자를 같이 넘겨줄 수 있다. 아래 예시문을 추가하였다.!
docker run -it test:pandas your_day_value

 

2. pipeline.py 작성하기

import pandas as pd
import sys
# some fancy stuff with pandas

# argv[0] = name of the file
day = sys.argv[1]

print(f'job finished successfully day= f{day}')

 

인자를 받아서 구문을 출력하는 간단한 파일을 생성하여 테스트 해보았다.

 

3. 이미지 빌드 및 실행

  • 빌드 명령: -t를 이용해서 tag를 부여하고 .을 이용해서 현재 디렉토리를 빌드 컨텍스트의 위치로 지정한다.
    즉, docker build 명령을 실행하는 위치에서 Dockerfile을 찾고, 해당 디렉터리와 그 하위 디렉터리에 있는 파일들을 이미지 빌드에 사용할 수 있는 자원으로 간주한다.
docker build -t test:pandas .

 

  • 이미지 실행(컨테이너 생성)
    : 도커 컨테이너를 실행하고 생성된 컨테이너에 인자를 전달한다.
    -it 옵션은 Docker 컨테이너를 대화형 모드로 실행하며, 터미널 입력을 컨테이너에 연결한다!
    이 옵션은 일반적으로 컨테이너 내에서 명령어를 실행하거나, 쉘에 접근하여 컨테이너를 대화식으로 조작할 필요가 있을 때 사용된다.
docker run -it test:pandas 2024-03-18

 


Codes: https://github.com/poriz/data-engineering-zoomcamp-poriz/tree/main/01-docker-terraform/introduce_to_docker