latest 태그 사용

Dockerfile에서 latest 태그를 사용하면 빌드 시점에 따라 다른 베이스 이미지가 내려받아질 수 있습니다.

설명

FROM alpine:latest의 latest는 게시자가 지정하는 변경 가능한 태그이며 가장 최근 이미지라는 보장은 없습니다. 이 태그가 다른 이미지를 가리키면 같은 Dockerfile을 다시 빌드해도 결과가 달라질 수 있습니다.

이 방식은 재현 가능한 빌드를 어렵게 하고, 예상하지 못한 변경을 운영 환경에 반영하게 만들 수 있습니다. 구체적인 버전 태그는 의도한 릴리스 계열을 나타내지만 그 태그도 변경될 수 있습니다. image:latest@sha256:...처럼 확인한 다이제스트를 지정하면 선택되는 이미지 내용이 고정됩니다.

잠재적 영향

  • 이미지 저장소가 갱신될 때마다 다른 베이스 이미지가 적용될 수 있습니다.
  • 갑작스러운 버전 변경으로 애플리케이션 호환성 문제가 생길 수 있습니다.
  • 장애 원인 분석과 롤백이 어려워집니다.

해결 방법

  • latest 대신 구체적인 버전 태그를 사용하세요.
  • 운영 환경, 테스트 환경 등 용도에 맞는 명확한 태그 정책을 정하세요.
  • 중요한 이미지에는 태그와 함께 다이제스트를 지정하세요. latest라는 태그가 남아 있어도 다이제스트가 붙으면 선택되는 이미지 내용은 고정됩니다.

예시

변경 전

dockerfile
FROM alpine:latest

변경 후

dockerfile
FROM alpine:3.22

설명:

  • 변경 전: latest는 고정된 버전이 아니어서 빌드 결과가 쉽게 달라질 수 있습니다.
  • 변경 후: 의도한 릴리스 계열을 지정합니다. 정확한 내용 고정에는 다이제스트를 사용하고, 고정한 이미지의 보안 업데이트도 계속 반영하세요.

참조