스택큐힙리스트

어떻게 Docker 이미지를 평평하게 만들까요? 본문

카테고리 없음

어떻게 Docker 이미지를 평평하게 만들까요?

스택큐힙리스트 2023. 11. 20. 15:26
반응형

저는 Docker 컨테이너를 만들었는데 그 컨테이너는 꽤 큽니다. 컨테이너를 커밋해서 이미지를 만들면 이미지는 약 7.8GB입니다. 그러나 컨테이너를 tarball로 내보내고 다시 가져와서 import하면 이미지는 단 3GB입니다. 물론 이 경우에는 히스토리가 손실되지만, 저에게는 괜찮습니다. 이미지가 제 의견에 따라 완료되고 배포 준비가 되었으니까요.


디스크로 내보내고 다시 가져오지 않고 이미지/컨테이너를 평평하게 만드는 방법은 무엇인가요? 그리고 그것을 하는 것이 현명한 아이디어인지 놓친 중요한 점이 있는 건가요?

답변 1

$ docker build -t test-multi-hello .                                                                                                                              
빌드 컨텍스트를 Docker 데몬으로 전송 중 4.096kB
스텝 1/9: ARG GOLANG_VER=1.8
--->
스텝 2/9: FROM golang:${GOLANG_VER} as builder
---> a0c61f0b0796
스텝 3/9: WORKDIR /go/src/app
---> 캐시 사용
---> af5177aae437
스텝 4/9: COPY . .
---> 캐시 사용
---> 976490d44468
스텝 5/9: RUN go-wrapper download
---> 캐시 사용
---> e31ac3ce83c3
스텝 6/9: RUN go-wrapper install
---> 캐시 사용
---> 2630f482fe78
스텝 7/9: FROM scratch
--->
스텝 8/9: COPY --from=builder /go/bin/app /app
---> 캐시 사용
---> 5645db256412
스텝 9/9: CMD /app
---> 캐시 사용
---> 8d428d6f7113
성공적으로 8d428d6f7113을 빌드했습니다.
test-multi-hello:latest라고 태그되었습니다.

이미지를 살펴보면, 배송되는 이미지에는 단일 이진 파일만 있으며, 빌드 환경은 700MB 이상입니다:


$ docker images | grep 2630f482fe78
<없음> <없음> 2630f482fe78 6 일 전 700MB
$ docker images | grep 8d428d6f7113
test-multi-hello 최신 8d428d6f7113 6 일 전 1.56MB

그리고 실행됩니다:


$ docker run --rm test-multi-hello 
안녕, 세계.

답변 2

어떻게 도커 이미지를 플래튼화할 수 있을까요?
도커는 컨테이너화된 애플리케이션 개발과 배포를 위해 매우 인기 있는 도구입니다. 도커 이미지는 컨테이너 실행을 위한 모든 필수 파일과 설정을 포함하는 패키지입니다. 때로는 이미지 크기를 최소화하고, 실행 속도와 효율성을 개선하기 위해 이미지를 플래튼화하는 것이 중요할 수 있습니다. 이 글에서는 도커 이미지를 플래튼화하는 방법에 대해 알아보겠습니다.
1. 사용하지 않는 파일 제거: 이미지는 애플리케이션 실행에 필요하지 않은 파일을 포함할 수 있습니다. 플래튼화를 위해 사용되지 않는 파일을 제거하세요. 이를 위해 `docker build` 커맨드에서 `COPY` 지시어를 사용하여 필요한 파일만 복사하도록 Dockerfile을 수정할 수 있습니다.
2. 정리된 빌드 과정: 빌드 단계에서 컨테이너 내부에 설치한 종속성 및 임시 파일을 삭제하는 것이 좋습니다. 이를 통해 이미지 크기를 줄일 수 있습니다. 또한, 빌드 과정에서 캐시를 적절히 활용하여 다운로드 및 설치 시간을 단축시킵니다. 이렇게 하면 이미지가 더욱 효율적이고 단순화됩니다.
3. 다중 스테이지 빌드: 다중 스테이지 빌드는 플래튼화를 위한 효과적인 방법입니다. 도커는 여러 개의 `FROM` 지시어를 허용합니다. 각 스테이지에서 필요한 파일만 복사하고 설치한 종속성만 다음 스테이지로 전달하여 이미지 크기를 줄일 수 있습니다. 이를 활용하면 한 이미지 내의 여러 컴포넌트를 개별적으로 관리할 수 있습니다.
4. 압축 및 압축 해제: 도커 이미지에는 압축된 파일 형식인 TAR 파일이 포함됩니다. 이미지를 플래튼화하기 위해 TAR 파일을 압축해제하고 필요한 파일만 남기세요. 이렇게 하면 이미지 크기를 줄일 수 있습니다.
5. 최적화된 설정: 이미지에 포함된 설정 파일을 최적화하세요. 예를 들어, 로그 파일을 최소한으로 유지하거나, 로그 파일 경로를 변경하여 필요한 용량을 줄일 수 있습니다. 불필요한 패키지 및 라이브러리도 삭제하는 것이 좋습니다. 최소한의 구성만 유지하여 이미지 크기를 최적화하세요.
도커 이미지를 플래튼화하는 것은 애플리케이션 실행의 성능과 효율성을 향상시키는 중요한 과정입니다. 위에서 언급한 방법들을 사용하여 이미지를 최적화하고, 필요한 파일과 설정만 포함된 효율적인 도커 이미지를 작성하세요. 이는 더욱 작동하기 쉬운 애플리케이션을 개발하고 관리하는 데 도움이 될 것입니다.

반응형
Comments