반응형
Jib 이란
Jib은 Docker Daemon 없이 자바 애플리케이션에 최적화된 도커 이미지를 빌드하고 Docker 허브 or 외부 레지스트리에 저장하는 플러그인입니다.
Gradle, Maven과 같은 빌드 툴과 함께 사용됩니다.
왜 Docker Daemon이 필요 없는가!
1. 빌드 방식 차이
- Dockfile을 통한 전통적인 방법 : Docker에서는 Dockerfile을 작성하고, docker build 명령어를 통해 이미지를 빌드합니다. 해당 과정에서 Docker Daemon이 필요하며, 도커 데몬을 통해 이미지를 빌드하고 레이어를 관리합니다.
- Jib 방법: Jib은 직접적으로 이미지를 빌드하여 Docker Daemon과 상호작용하지 않습니다. Jib은 자바 애플리케이션을 직접 분석하여, Docker 이미지 레이어를 생성하고, 이미지를 생성합니다.
어떻게 Java 애플리케이션을 최적화하는지!
1. 레이어 분리
애플리케이션을 여러 레이어로 분리하여 빌드합니다.
- 기본 이미지 레이어 : 애플리케이션을 위한 기본 이미지(JDK, JRE)를 사용하여 초기 레이어를 설정합니다.
- 의존성 레이어 : 애플리케이션의 의존성 라이브러리를 별도의 레이어로 패키징 합니다.
- 애플리케이션 레이어 : 최종적으로 애플리케이션의 코드를 별도의 레이어로 패키징 합니다.
⇒ 레이어 분리를 통해 변경된 부분만 업데이트할 수 있어, 이미지 빌드 시간이 단축됩니다.
2. 최적화된 캐싱
- Jib은 의존성과 애플리케이션 코드 변경 사항을 감지하여, 변경된 부분만 다시 빌드합니다. 불필요한 재빌드를 방지하여, 빌드 시간을 단축합니다.
Jib의 장점
- 빠른 애플리케이션 빌드 속도
- 재생 가능한 빌드 방식 (Reproducible)
- 동일한 컨텐츠로 컨테이너 이미지를 다시 빌드하면 항상 동일한 이미지가 생성됩니다. 즉, 불필요한 업데이트가 다시 실행되지 않으며, 변경된 내용이 없다면 이미지 빌드 과정이 수행되지 않습니다.
- Docker Daemonless
- 도커 데몬으로부터 자유로워 CLI 종속성을 줄입니다. Dockfile을 작성하고 docker build/push를 호출하지 않아도 됩니다. 간단히 Gradle, Maven 내에서 Docker 이미지, 레지스트리, 로그인 정보를 작성하여 처리합니다.
Dockerfile vs Jib 빌드 속도 비교 결과
전통적인 Dockerfile 빌드 방식은 약 6분 30초 ~ 6분 45초에 빌드 시간이 걸렸습니다. 하지만 JIB 방식은 첫 빌드 시에 약 5분 30초 ~ 6분 정도의 빌드 시간이 걸리고 2 번째 빌드부터는 레이어 분리와 캐싱 방식으로 1분 20초 ~ 1분 40초로 빌드 시간이 단축되었습니다.
2 번째 빌드부터는 Before 방식보다 약 77% 정도 빌드 시간을 단축했습니다.
반응형
'Infra > Docker' 카테고리의 다른 글
[Docker] Docker run, cmd, entrypoint 차이 이해하기 (0) | 2024.09.27 |
---|---|
[Docker] Docker compose로 redis 실행하기 - redis.conf, requirepass, data 설정 (0) | 2024.04.21 |
[Docker] Docker network, volume 이해 및 docker-compose에 network, volume 지정하기 (0) | 2024.04.21 |
[Docker] springboot와 vue, mysql 배포부터 연동까지 (0) | 2023.12.03 |
[Docker] 도커 허브 연결하기, 도커 컴포즈 docker-compose 파일 작성하기 (1) | 2023.12.03 |