본문 바로가기
[스파르타코딩클럽]/Docker & CICD

Docker Image 심화

by 진진리 2024. 3. 19.
728x90

Dockerfile 최적화

  • 빠르게 만들기: Docker 이미지 만드는 시간을 줄일 수 있음
  • 이미지 크기 줄이기: 저장 공간을 덜 차지하고 다운로드나 전송할 때도 더 빨라짐
  • 재사용성 높이기: 여러 번, 여러 곳에서 쓸 수 있어서 편리
  • 보안 강화
  • 유지보수 쉽게: 나중에 수정하거나 업데이트할 때 훨씬 쉬움
# build 는 gradle 이미지에서 `builder`라는 이름으로.
FROM gradle:8.5-jdk21-alpine AS builder

WORKDIR /app
COPY ./ ./
RUN gradle clean bootJar


# App
FROM eclipse-temurin:21-jre-alpine

WORKDIR /app
COPY --from=builder /app/build/libs/spring-boot-0.0.1-SNAPSHOT.jar .

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "spring-boot-0.0.1-SNAPSHOT.jar"]
  • 최소한의 라이브러리만 설치된 이미지를 사용하여 빌드
  • multi stage를 사용하여 application 실행 Container에 gradle이 설치되는 것을 방지

 

Container 가상화

  • Container 이점
    • 경량화: 컴퓨터의 운영체제(OS)를 여러 앱과 공유해서 따로 운영체제를 설치할 필요가 없음. 크기가 작아서 빨리 시작 가능
    • 이동성과 플랫폼 독립성: 앱을 실행하는 데 필요한 모든 것을 함께 담아 그대로 옮겨 실행 가능
    • 현대적인 개발 및 아키텍처 지원: 크기가 작고 여러 플랫폼에서 잘 작동해서 최신 개발 방식과 앱 패턴에 잘 맞음
    • 사용률 향상: 컴퓨터의 CPU나 메모리를 더 효율적으로 사용 가능. 앱의 각 부분을 따로따로 배치하거나 크기를 조절할 수 있기 때문에 유연하게 관리할 수 있음
  • Container 용도
    • 마이크로 서비스에 좋음: 앱을 여러 작은 부분으로 나눠 서로 독립적으로 잘 돌아가게 할 수 있음
    • DevOps에 유용: 앱을 빠르고 효율적으로 개발하고 배포 가능
    • 하이브리드, 멀티클라우드에 이상적
    • 클라우드 마이그레이션에 도움: 앱을 클라우드로 쉽게 옮길 수 있고 관리도 편해짐

'[스파르타코딩클럽] > Docker & CICD' 카테고리의 다른 글

Docker Network  (2) 2024.03.19
Docker volume  (0) 2024.03.19
Docker 모니터링&로깅  (0) 2024.03.19
Docker Compose  (1) 2024.03.19
Dockerfile  (0) 2024.03.18