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