Docker 기본 플로우
dockerfile 작성 → image 빌드 → container 실행
dockerfile
- 컨테이너 이미지를 생성하기 위한 명령어 모음이 담긴 텍스트 파일 (명령이 들어있는 설계도)
- dockerfile 작성 - 실제로 실행해야할 명령어들을 순서대로 작성
- 베이스 이미지 선택
- 이미지의 기반이 될 OS 또는 런타임 선택
- 애플리케이션 설치 및 설정
- 필요한 코드와 파일을 이미지에 복사
- 파일 복사
- 애플리케이션 실행에 필요한 라이브러리나 도구 설치
- 작업 디렉토리 설정
- 컨테이너에서 열어야 할 포트 정의
- 애플리케이션 실행 명령어
- 컨테이너 실행 시 기본으로 실행될 명령 설정
- 베이스 이미지 선택
더보기
# 1. 베이스 이미지
FROM python:3.10-slim
# 2. 작업 디렉토리 설정
WORKDIR /app # 컨테이너 내부에서 /app 디렉토리를 작업 폴더로 지정
# 3. 애플리케이션 코드 복사
COPY . . # 현재 디렉토리(.)의 모든 파일을 컨테이너의 /app으로 복사
# 4. 의존성 설치
RUN pip install --no-cache-dir -r requirements.txt
# 5. 포트 설정
EXPOSE 5000
# 6. 실행 명령
CMD ["python", "app.py"]
- .git이나 불필요한 파일 등을 빌드에 포함하지 않도록 .dockerignore 파일 설정하기
- 가볍고 최적화된 이미지를 빌드
- 빠른 속도
- 리소스 절약
- 보안 취약점 감소
- root가 아닌 사용자 계정 사용
- 보안 강화
- 권한 관리
image
- dockerfile을 기반으로 image 빌드
- 이미지 = 파이썬 클래스
- 파이썬에서 제공하는 클래스가 있듯이 도커가 만들어놓은 이미지를 가져와서 사용할 수 있음
container
- image를 기반으로 container 실행
- 컨테이너 = 파이썬 객체 (하나의 클래스로 여러개의 객체를 만들 수 있음, 이미지는 고정이고 컨테이너는 수정 가능)