Docker 이미지 크기를 줄이는 방법


12

GlassFish를 실행하는 컨테이너가 있습니다. 이미지 커밋을 시도했을 때 14GB가되었습니다. 나중에 /tmp/10GB 인 컨테이너에서 삭제 하고 이미지를 커밋하려고했지만 이미지는 14GB입니다. 컨테이너에서 파일을 삭제하면 이미지 크기에 반영되지 않는 것 같습니다. 이 문제를 어떻게 해결합니까?


1
아무도 당신의 설정에 대해 조금도 알지 않고서는 어떤 권고도 할 수 없습니다. Dockerfile은 무엇입니까? Docker 빌드 컨텍스트에 추가되는 파일 트리는 무엇입니까? 공식 glassfishDocker 이미지는 약 1GB입니다. Docker 이미지의 경우 상당히 크지 만 여전히 빌드하는 것보다 훨씬 작습니다.
Andy Shinn

하우투에 대해서는 이 SO 질문 을 참조하십시오 . 또한 이 Google 검색 에는 많은 관련 기사가 있습니다.
Misha Brukman

답변:


9

커밋에서 파일을 제거해도 파일이 이전 이미지에 있다는 사실이 변경되지 않으므로 이전 이미지가 여전히 14G라는 문제가 발생합니다.

이 기사의 "계층"부분을 살펴보십시오. http://woudenberg.io/reducing-docker-image-size/

이 문제를 해결하려면 원래 커밋 내에서 / tmp / 아래의 항목을 제거해야합니다. 따라서 해당 커밋의 결과로 생성 된 이미지에는 해당 항목이 포함되지 않습니다. dockerfiles를 사용하면 쉽지만 커밋으로 이미지를 만들 때 가능한지 확실하지 않습니다.

이미지를 내보내거나 가져 와서 스쿼시 레이어를 수행 할 수도 있습니다.


4

@ Juan Antonio의 대답으로 확장 Dockerfile하면 공간을 절약 할 수 없습니다.

RUN apt-get install -y foo bar
...
RUN apt-get purge --auto-remove -y foo bar

대신해야 할 일은 :

RUN apt-get install -y foo bar && \
    && ... \
    && apt-get purge --auto-remove -y foo bar

단점은 큰 명령 줄에서 변경된 내용이 있으면 Docker가 전체 명령 집합을 다시 실행 해야하는 것처럼 캐싱이 적다는 것을 의미합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.