EXPOSE 포트 번호 범위 점검

유효한 포트 번호로 실제 서비스의 수신 포트를 명시하세요.

설명

TCP와 UDP 포트 번호의 범위는 0부터 65535까지이며, 0은 예약되어 있습니다. 고정된 서비스 포트에는 1부터 65535 사이의 적절한 값을 사용해야 합니다. 범위를 벗어난 EXPOSE 값은 빌드 오류를 일으킬 수 있습니다.

EXPOSE는 포트 정보를 선언할 뿐입니다. 애플리케이션을 해당 포트에서 수신하게 하거나 호스트에 포트를 공개하는 명령은 아닙니다.

잠재적 영향

  • 잘못된 포트 선언으로 빌드가 실패하거나 도구가 서비스 포트를 잘못 해석할 수 있습니다.
  • 선언과 실제 수신 포트가 다르면 배포 시 잘못된 포트 연결로 서비스에 접근하지 못할 수 있습니다.

해결 방법

  • EXPOSE에 실제 서비스와 일치하는 1부터 65535 사이의 포트와 필요한 TCP 또는 UDP 프로토콜을 지정하세요.
  • 애플리케이션의 수신 설정, 실행 시 포트 공개와 방화벽 정책을 별도로 확인하세요. 유효한 번호만으로 접근 통제가 보장되지는 않습니다.

예시

기존 NGINX 예제는 포트 선언만 비교합니다. 실제 배포에는 지원 중인 이미지를 사용하세요. 변경 후 80은 예제 이미지의 기본 HTTP 수신 포트에 맞춘 값입니다.

변경 전

dockerfile
FROM nginx:1.27-alpine

EXPOSE 65536
CMD ["nginx", "-g", "daemon off;"]

변경 후

dockerfile
FROM nginx:1.27-alpine

EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

설명:

  • 변경 전: 65536은 유효한 포트 번호 범위를 벗어납니다.
  • 변경 후: 80을 선언해 NGINX의 기본 HTTP 수신 포트와 맞춥니다. 호스트 포트 공개는 별도로 구성해야 합니다.

참조