도커 이미지 - 유형.슬림형 vs 슬림형 vs 스트레칭 vs 알파인
Java 앱을 구축하기 위해 도커 이미지를 선택하고 OpenJDK 이미지의 변형을 찾고 있습니다.여기 https://github.com/docker-library/openjdk/tree/master/8/jdk에서 알프스, 슬림, 창문이 보입니다.이들 간의 차이점은 무엇이며, 각 변형은 무엇을 제공합니까?
도커 라이브러리 문서(아래 인용문 및 링크)별로 다음과 같이 요약합니다.
openjdk:<version>
디팩토 이미지확실하지 않은 경우 사용합니다.
openjdk:<version>-buster
,openjdk:<version>-stretch
★★★★★★★★★★★★★★★★★」openjdk:<version>-jessie
buster
,jessie
★★★★★★★★★★★★★★★★★」stretch
는 Debian 릴리즈의 스위트코드명으로 이미지의 기반이 되는 릴리스를 나타냅니다.
openjdk:<version>-alpine
마찬가지로 이 이미지는 Alpine Linux를 기반으로 하기 때문에 매우 작은 기본 이미지입니다.이미지 사이즈를 가능한 한 작게 할 필요가 있는 경우에 추천합니다.주의할 점은 이것이 몇 가지 특이한 리브를 사용하지만 대부분의 소프트웨어에서는 문제가 되지 않는다는 것입니다.확실하지 않은 경우 아래 공식 문서를 확인하십시오.
openjdk:<version>
(12년 이후),openjdk:<version>-oracle
★★★★★★★★★★★★★★★★★」openjdk:<version>-oraclelinux7
「 」부터 합니다.openjdk:12
및 「」를 해 주세요.-oracle
★★★★★★★★★★★★★★★★★」-oraclelinux7
는 Oracle Linux 7 공식 이미지를 기반으로 합니다.기본 이미지의 OpenJDK 바이너리 및-oracle
★★★★★★★★★★★★★★★★★」-oraclelinux7
Oracle에 의해 구축되며 OpenJDK 커뮤니티에서 제공됩니다.
openjdk:<version>-slim
이 이미지에는 Java 실행에 필요한 최소한의 패키지만 포함되어 있습니다(예를 들어 UI 관련 Java 라이브러리의 많은 부분이 누락되어 있습니다).작업환경에서 작업하고 있지 않는 한openjdk
이미지가 전개되고 공간 제약이 있습니다.기본 이미지가 이 이미지보다 권장됩니다.
openjdk:<version>-windowsservercore
이 이미지는 Windows Server Core()microsoft/windowsservercore
를 기반으로 합니다.
이미지 변형
openjdk
이미지는 다양한 맛이 있으며 각각 특정 사용 사례에 맞게 설계되었습니다.
openjdk:<version>
이게 디팩토 이미지예요필요한 것이 무엇인지 잘 모르겠다면 이 제품을 사용하는 것이 좋습니다.이것은 일회용 컨테이너(소스 코드를 마운트하고 앱을 시작하기 위한 컨테이너 시작)와 다른 이미지를 빌드하기 위한 베이스로 사용할 수 있도록 설계되었습니다.
이 태그들 중 일부는 제시나 스트레치 같은 이름을 가지고 있을 수 있습니다.이것들은 Debian 릴리즈의 스위트코드명으로 이미지의 기반이 되는 릴리스를 나타냅니다.
openjdk:<version>-alpine
이 이미지는 공식 이미지로 제공되는 인기 있는 Alpine Linux 프로젝트를 기반으로 합니다.Alpine Linux는 대부분의 배포 기반 이미지(약 5MB)보다 크기가 훨씬 작기 때문에 전반적으로 훨씬 더 얇은 이미지를 제공합니다.
가능한 한 작은 최종 이미지 크기를 원하는 경우 이 변형을 사용하는 것이 좋습니다.주의할 점은 glibc 및 친구 대신 musl libc를 사용하기 때문에 libc 요건의 깊이에 따라 특정 소프트웨어에 문제가 발생할 수 있다는 것입니다.그러나 대부분의 소프트웨어에는 문제가 없으므로 이 변형은 일반적으로 매우 안전한 선택입니다.발생할 수 있는 문제에 대한 자세한 설명과 Alphine 기반 이미지 사용에 대한 찬성/찬성 비교는 이 Hacker News 주석 스레드를 참조하십시오.
이미지 크기를 최소화하기 위해 기타 관련 도구(예:
git
★★★★★★★★★★★★★★★★★」bash
)는 Alpine 기반 이미지에 포함됩니다.이 이미지를 기반으로 필요한 것을 Docker 파일에 추가합니다(모르는 경우 패키지 설치 방법의 예에 대해서는 이미지 설명을 참조하십시오).
openjdk:<version>-windowsservercore
이 이미지는 Windows Server Core()
microsoft/windowsservercore
를 기반으로 합니다.따라서 Windows 10 Professional/Enterprise(Anniversary Edition) 또는 Windows Server 2016과 같이 이미지가 기능하는 장소에서만 작동합니다.Windows 로 Docker 를 실행하는 방법에 대해서는, Microsoft 가 제공하는 관련의 「퀵 스타트」가이드를 참조해 주세요.
openjdk:<version>-slim
에서는, 「」를 합니다.
-headless
OpenJDK 등의 패키지에는 UI 관련 Java 라이브러리와 기본 태그에 포함된 일부 공통 패키지가 없습니다.Java 실행에 필요한 최소한의 패키지만 포함되어 있습니다.작업환경에서 작업하고 있지 않는 한openjdk
이미지가 도입되어 공간 제약이 있으므로 이 저장소의 기본 이미지를 사용하는 것이 좋습니다.
고객의 요구에 맞는 베이스 도커 이미지를 선택해 주세요.이미지 사이즈도 중요합니다.
이미지는 컨테이너 작성 방법에 대한 일련의 지침으로 간주할 수 있습니다.도커에서는 다른 이미지에서 하나의 이미지를 상속(또는 이에 기반)할 수 있으며 기본 이미지 위에 추가 명령을 추가할 수 있습니다.각 이미지는 사실상 불변의 여러 레이어로 구성됩니다.
Crafting the perfect Java Docker 빌드 플로우 기사를 읽어보십시오.
도커의 이미지 사이즈는 매우 중요합니다.크기는 다음 사항에 영향을 미칩니다.
- 네트워크 레이텐시: 도커 이미지를 웹 경유로 전송
- 스토리지: 이 모든 비트를 어딘가에 저장해야 합니다.
- 서비스 가용성과 탄력성: Kubernetes, Swarm, Nomad, DC/OS 등의 Docker 스케줄러를 사용하는 경우(스케줄러는 호스트 간에 컨테이너를 이동할 수 있음)
- 보안: Java 어플리케이션의 CVE 취약성을 모두 갖춘 libpng 패키지가 정말 필요한가요?
- 개발 민첩성: 작은 도커 이미지 == 빌드 시간 단축 및 구축 시간 단축
Java 애플리케이션을 실행하려면 적어도 JRE가 필요합니다.예를 들어, 스프링 프로젝트의 경우 이미지의 기반이 될 수 있습니다.slim Alpine Linux with OpenJDK JRE
:
#simple dockerFile for java app:
#here we are using Base Alpine Linux based image with OpenJDK JRE only
#For Java 8, try this
FROM openjdk:8-jre-alpine
#For Java 11, try this
#FROM adoptopenjdk/openjdk11:alpine-jre
#copy application WAR/JAR (with libraries inside)
COPY target/spring-boot-*.war/jar yourName.war/jar
# specify default command
CMD ["/usr/bin/java", "-jar", "/yourName.war/jar"]
또,docker history yourImageName
이미지를 만드는 모든 레이어(및 그 크기)를 표시합니다.
언급URL : https://stackoverflow.com/questions/54954187/docker-images-types-slim-vs-slim-stretch-vs-stretch-vs-alpine
'sourcecode' 카테고리의 다른 글
폴더에서 모든 Vue 구성 요소를 가져오려면 어떻게 해야 합니까? (0) | 2022.08.13 |
---|---|
Enter 키를 누르지 않고 칩을 사용하여 태그를 vuetify합니다. (0) | 2022.08.13 |
어레이 응답을 vue.js 및 larabel로 표시하는 방법 (0) | 2022.08.13 |
VueJ: 트리거 시 커스텀 Socket.io에서 내보내는 기능이 처리되지 않음 (0) | 2022.08.13 |
vue의 콜백에서 로컬 컴포넌트 변수에 액세스하는 방법 (0) | 2022.08.13 |