Skip to content
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

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Conversation

HwanGonJang
Copy link
Contributor

개요

  • 이제는 백엔드 개발자들에게 필수가 된 도커 이미지를 안전하고 빠르게 사용하는 법에 대해 소개합니다.
  • 사실 AWS는 아니긴한데 굳이 넣자면 여기가 맞는 것 같습니다.

체크리스트

  • PR 제목을 Commit Convention에 맞게 작성
  • Label 추가
  • 리뷰어 팀 등록했나요?
  • Assignee 등록했나요?

Copy link
Contributor

@chaeyeon0130 chaeyeon0130 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

도커 이미지를 최적화하는데 엄청 여러 방법이 있군요 좋은 정보 감사합니당

Comment on lines +90 to +112
#### 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"]
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

각 스테이지가 병렬적으로 수행되나요?


### Docker 이미지 취약점 해결
Docker 이미지는 공식적으로 인증된 이미지라 하더라도 취약점을 가질 수 있다. 이를 해결하기 위해 취약점이 없는 이미지를 사용하거나, 버전을 업데이트하거나, 베이스 이미지를 변경할 수 있다.

Copy link
Member

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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

신기하다 폰트도 카피 ㅋㅋㅋ

Copy link
Contributor

@sna0e sna0e left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Docker 이미지 크기를 줄이는 것은 항상 좋은 영향만 있는 건가요?

Comment on lines +44 to +46
#### Distroless 사용
첫 번째 방법은 Distroless 이미지를 사용하는 것이다. Google이 개발한 Distroless 이미지는 가장 작은 크기의 이미지 중 하나다. Distroless 이미지는 애플리케이션과 실행에 필요한 런타임 종속성만 포함한다.
예를 들어, 가장 작은 Distroless 이미지인 `gcr.io/distroless/static-debian11`는 약 2 MiB 크기이며, 이는 `alpine`(~5 MiB)의 약 50%이고, `debian`(124 MiB)의 2% 미만이다. 아래는 Distroless 이미지를 사용하는 예제다.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Distroless 이미지라는게 있군요. os 자체가 경량화된 것일까요? 런타임 종속성만 포함된다는 것이 이미지 내에 어떤 종속성을 뜻하는 것인가요?

@hjch0211
Copy link
Contributor

도커 이미지 최적화.. 저한테 너무 필요한 내용이었어요. 잘 읽고 갑니답🙂🙃

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants