MAINTAINER 지시어 사용

Dockerfile의 MAINTAINER 지시는 더 이상 권장되지 않으며 LABEL로 메타데이터를 관리하는 편이 좋습니다.

설명

MAINTAINER는 예전 Dockerfile에서 이미지 작성자 정보를 넣던 방식이지만, 지금은 더 이상 권장되지 않습니다. 현재는 LABEL을 사용해 작성자, 팀, 저장소, 버전 같은 메타데이터를 더 유연하게 관리하는 방식이 일반적입니다.

직접적인 보안 취약점이라기보다 오래된 작성 방식을 계속 쓰는 문제에 가깝습니다. 하지만 메타데이터 관리 기준이 섞이면 이미지 유지보수와 자동화 도구 연동이 불편해질 수 있습니다.

잠재적 영향

  • 오래된 Dockerfile 작성 방식이 남아 유지보수 기준이 일관되지 않을 수 있습니다.
  • 이미지 메타데이터를 자동으로 읽는 도구와의 연동이 불편해질 수 있습니다.

해결 방법

  • MAINTAINER 대신 LABEL을 사용해 작성자나 관리 정보를 선언하세요.
  • 필요한 메타데이터 키와 값을 정리하고 이를 읽는 도구와 호환되는지 확인하세요. 공개되는 이미지 메타데이터에 비밀정보를 넣지 마세요.

예시

두 예제는 작성자 메타데이터 표현만 비교합니다. app 디렉터리에는 대상 이미지에서 실행할 수 있는 server 파일이 필요합니다.

변경 전

dockerfile
FROM alpine:3.20

MAINTAINER devops@example.com
COPY app /app
CMD ["/app/server"]

변경 후

dockerfile
FROM alpine:3.20

LABEL maintainer="devops@example.com"
COPY app /app
CMD ["/app/server"]

설명:

  • 변경 전: 더 이상 권장되지 않는 MAINTAINER 지시어를 사용합니다.
  • 변경 후: LABEL로 같은 작성자 정보를 관리합니다. 애플리케이션 실행 권한이나 보안을 바꾸는 설정은 아닙니다.

참조