-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[AWS] Docker 이미지 최적화하기 #45
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
도커 이미지를 최적화하는데 엄청 여러 방법이 있군요 좋은 정보 감사합니당
#### Docker 멀티 스테이지 빌드 | ||
<img src="./image/Pasted image 20240719110933.png"> | ||
Docker 멀티 스테이지 빌드를 사용하면 Dockerfile에서 여러 단계를 정의할 수 있다. 이를 통해 필요한 구성 요소만 포함된 최소한의 최종 이미지를 생성할 수 있다. | ||
아래는 Spring Boot 애플리케이션을 위한 멀티 스테이지 빌드의 예제다. | ||
|
||
```dockerfile | ||
FROM amazoncorretto:17.0.10-al2023 AS base | ||
WORKDIR /app | ||
COPY /docker/docker-application/build/libs/docker-application-0.0.1-SNAPSHOT.jar /app.jar | ||
RUN java -Djarmode=layertools -jar app.jar extract | ||
|
||
FROM amazoncorretto:17.0.10-al2023 | ||
WORKDIR /app | ||
EXPOSE 8080 | ||
COPY --from=base /app/dependencies/ ./ | ||
COPY --from=base /app/spring-boot-loader/ ./ | ||
COPY --from=base /app/snapshot-dependencies/ ./ | ||
COPY --from=base /app/application/ ./ | ||
ENV MODULE_NAME docker | ||
ENV TZ Asia/Seoul | ||
|
||
ENTRYPOINT ["java", "-Dspring.profiles.active=develop", "org.springframework.boot.loader.JarLauncher"] | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
각 스테이지가 병렬적으로 수행되나요?
|
||
### Docker 이미지 취약점 해결 | ||
Docker 이미지는 공식적으로 인증된 이미지라 하더라도 취약점을 가질 수 있다. 이를 해결하기 위해 취약점이 없는 이미지를 사용하거나, 버전을 업데이트하거나, 베이스 이미지를 변경할 수 있다. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
취약점 이미지가 가지고 있는 단점은 어떤게 있나요?
|
||
EXPOSE 8080 | ||
|
||
COPY /font/NanumGothic.ttf /font/NanumGothic.ttf |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
신기하다 폰트도 카피 ㅋㅋㅋ
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Docker 이미지 크기를 줄이는 것은 항상 좋은 영향만 있는 건가요?
#### Distroless 사용 | ||
첫 번째 방법은 Distroless 이미지를 사용하는 것이다. Google이 개발한 Distroless 이미지는 가장 작은 크기의 이미지 중 하나다. Distroless 이미지는 애플리케이션과 실행에 필요한 런타임 종속성만 포함한다. | ||
예를 들어, 가장 작은 Distroless 이미지인 `gcr.io/distroless/static-debian11`는 약 2 MiB 크기이며, 이는 `alpine`(~5 MiB)의 약 50%이고, `debian`(124 MiB)의 2% 미만이다. 아래는 Distroless 이미지를 사용하는 예제다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Distroless 이미지라는게 있군요. os 자체가 경량화된 것일까요? 런타임 종속성만 포함된다는 것이 이미지 내에 어떤 종속성을 뜻하는 것인가요?
도커 이미지 최적화.. 저한테 너무 필요한 내용이었어요. 잘 읽고 갑니답🙂🙃 |
개요
체크리스트