yum 패키지 버전 고정 누락

Dockerfile에서 yum install 시 패키지 버전을 지정하지 않으면 빌드 시점에 따라 다른 패키지가 설치될 수 있습니다.

설명

yum install httpd처럼 버전 없이 패키지를 설치하면 저장소 상태에 따라 다른 버전이 설치될 수 있습니다. 같은 Dockerfile을 다시 빌드해도 결과가 달라질 수 있어 이미지 재현성이 떨어집니다.

배포용 이미지는 언제 빌드해도 비슷한 결과가 나와야 장애 분석과 롤백이 쉽습니다. 필요한 패키지는 버전을 함께 지정해 예기치 않은 변경을 줄이는 편이 안전합니다.

잠재적 영향

  • 빌드 시점에 따라 서로 다른 패키지 버전이 설치될 수 있습니다.
  • 예상하지 못한 패키지 변경으로 애플리케이션 동작이 달라질 수 있습니다.
  • 테스트 환경과 운영 환경의 이미지 구성이 달라질 수 있습니다.

해결 방법

  • yum install -y httpd-<version>-<release> 형식으로 저장소에서 확인한 정확한 버전과 릴리스를 지정하세요.
  • 변수로 버전을 관리하더라도 실제 설치되는 값이 고정되도록 유지하세요.
  • 버전 변경 시 테스트와 보안 점검 후에만 반영하세요.

예시

yum을 제공하는 지원 대상 이미지의 설치 명령 발췌입니다. HTTPD_VERSION_RELEASE에는 해당 이미지의 저장소에서 설치 가능한 검토한 버전-릴리스를 제공하세요. 다른 패키지와 베이스 이미지의 고정 및 보안 업데이트도 별도로 관리해야 합니다.

변경 전

dockerfile
RUN yum install -y httpd && yum clean all
RUN ["yum", "install", "httpd"]

변경 후

dockerfile
ARG HTTPD_VERSION_RELEASE
RUN test -n "$HTTPD_VERSION_RELEASE" && yum install -y "httpd-${HTTPD_VERSION_RELEASE}" && yum clean all

설명:

  • 변경 전: 패키지 버전이 고정돼 있지 않아 저장소 변경이 그대로 빌드 결과에 반영될 수 있습니다.
  • 변경 후: 필요한 버전을 명시해 이미지 구성을 더 안정적으로 유지합니다.

참조