본문 바로가기
Docker

도커 인 액션 8장

by xogns93 2024. 12. 6.

Dockerfile을 활용한 자동 이미지 빌드 핵심 요약

 

 

  1. Dockerfile 기본 개념:
    • Dockerfile은 이미지 빌드 과정을 자동화하는 스크립트 파일입니다.
    • 각 명령어는 하나의 이미지 레이어를 생성하며, 빌드 순서는 위에서 아래로 진행됩니다.
    • 첫 번째 명령어는 반드시 FROM이어야 하며, 베이스 이미지를 정의합니다.
  2. 주요 Dockerfile 명령어:
    • FROM: 베이스 이미지 설정.
    • LABEL: 메타데이터 추가.
    • RUN: 명령어 실행 후 결과를 새로운 레이어로 저장.
    • COPYADD: 로컬 또는 원격 파일을 컨테이너로 복사.
    • ENV: 환경 변수 설정.
    • ENTRYPOINTCMD: 컨테이너 시작 시 실행할 명령 설정.
    • USER: 실행 사용자 설정.
    • VOLUME: 외부 볼륨을 마운트 가능하도록 정의.
    • EXPOSE: 컨테이너의 열려있는 포트를 명시.
  3. 이미지 빌드 최적화:
    • 명령어 병합으로 레이어 수를 줄여 이미지 크기를 최소화.
    • 캐싱을 활용해 빌드 시간 단축.
    • 멀티스테이지 빌드를 사용해 빌드 환경과 런타임 환경을 분리.
  4. 빌드 아규먼트와 환경 변수:
    • ARG: 빌드 시 동적으로 값을 지정할 수 있는 변수.
    • ENV: 컨테이너 실행 시 사용할 환경 변수.
  5. 멀티스테이지 빌드:
    • 여러 FROM 단계를 사용해 빌드 환경과 런타임 환경을 구분.
    • 빌드된 바이너리나 파일만 최소화된 최종 이미지로 복사.
  6. 이미지 보안 강화:
    • 최소화된 이미지 사용 (예: scratch).
    • 기본 사용자로 non-root 설정.
    • SUIDSGID 권한 비활성화.
    • Content-Addressable Image Identifier(CAIID)를 사용해 특정 이미지 버전 고정.
  7. 컨테이너 실행 환경 검증:
    • Startup 스크립트로 실행 전 환경 변수, 네트워크 접근성 등 검증.
    • 적절한 초기화 프로세스(init)를 설정해 안정성을 강화.
  8. 헬스 체크(Health Check):
    • HEALTHCHECK 명령어로 애플리케이션 상태 확인.
    • 성공(0), 실패(1) 등의 종료 상태를 반환하여 컨테이너 상태를 반영.

 


 

Dockerfile 활용 시 권장 사항:

  • 모범 사례:
    • 명령어 일관성 유지 (쉘 스타일 vs 배열 스타일).
    • 필수 검증 작업 추가로 빠른 실패(Fail Fast) 구현.
    • 중복 코드 제거 및 유지보수성을 위해 ARG와 멀티스테이지 빌드 사용.
  • 보안 강화를 위한 작업:
    • Root 사용 제한.
    • 불필요한 패키지 및 실행 파일 제거.
    • SUID/SGID 권한 제거.

 

'Docker' 카테고리의 다른 글

멀티스테이지 빌드(Multi-Stage Build)  (0) 2024.12.10
바인드 마운트(Bind Mount)와 볼륨(Volumes)  (0) 2024.12.10
도커 인 액션 7장  (0) 2024.12.06
Dockerfile 명령어  (0) 2024.12.06
유니온 파일시스템  (1) 2024.12.06