기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
추가 고려 사항
이 섹션에서는 Java EE 애플리케이션에만 국한되지 않는 Java 컨테이너화에 대한 일반적인 고려 사항을 다룹니다.
작은 기본 이미지 사용
500MB 미만의 작고 잘 관리된 기본 이미지를 생성하는 것이 좋습니다. 기본 이미지 크기를 줄이면 네트워크 및 운영 비용이 감소합니다. 기본 이미지가 작을수록 악용될 수 있는 구성 요소 수가 감소하여 보안도 향상될 수 있습니다. Debian 기반의 Distroless 이미지 중 하나를 사용할 수 있습니다. 이미지에는 최소한의 도구가 설치되어 있으며 패키지 관리자나 쉘이 포함되어 있지 않습니다. 이러한 Distroless 이미지는 전체적인 공격 표면을 감소시키기도 합니다. Distroless 이미지는 150MB 미만일 수 있습니다. 자세한 내용은 "Distroless" Container Images
일회성 원칙을 따르고 컨테이너 이미지의 시작 시간을 단축하는 것이 가장 좋습니다. ahead-of-time-compilation
컨테이너 인식 JDK 버전으로 업그레이드
JDK 8u131 이전에는 JVM이 플래그를 사용하여 도커 엔진에서 설정한 메모리 또는 CPU 제한을 인식하지 못했습니다. 즉, 컨테이너에서 애플리케이션을 실행할 때마다 JVM은 시스템 또는 가상 시스템(가상 시스템의 경우)에서 사용 가능한 총 프로세서 수를 '인식'합니다. 기본 메모리 제한도 마찬가지입니다. JVM은 호스트의 전체 메모리를 살펴보고 이를 기본값 설정에 사용합니다. 따라서 JVM은 컨테이너 플랫폼에서 허용하는 것보다 더 많은 메모리를 할당할 수 있으며, 이로 인해 컨테이너 플랫폼(도커)에서 Java 프로세스를 종료하게 됩니다. 이 문제를 해결할 수 있는 한 가지 방법은 컨테이너화하기 전에 Java 애플리케이션을 Java 9 또는 8u131+로 마이그레이션하는 것입니다. Java 10 이상 버전은 완전한 컨테이너 인식 및 지원을 제공합니다.