Jak zmniejszyć rozmiar obrazu Dockera


12

Mam pojemnik z systemem GlassFish. Kiedy próbowałem zatwierdzić obraz, stał się 14 GB. Później usunąłem /tmp/w pojemniku, który miał 10 GB i próbowałem zatwierdzić obraz, ale nadal obraz ma 14 GB. Wygląda na to, że usunięcie plików z kontenera nie ma odzwierciedlenia w rozmiarze obrazu. Jak rozwiązać ten problem?


1
Nikt tak naprawdę nie może wydawać żadnych rekomendacji bez wiedzy o konfiguracji. Co to jest plik Docker? Jakie drzewo plików zostaje dodane do kontekstu kompilacji Dockera? Oficjalny glassfishobraz Dockera ma około 1 GB. Choć obraz Dockera jest cholernie duży, wciąż jest znacznie mniejszy niż to, co wydajesz się budować.
— Andy Shinn,

Zobacz to SO, aby dowiedzieć się, jak to zrobić. Ponadto, ta wyszukiwarka Google zawiera szereg odpowiednich artykułów.
— Misha Brukman

Odpowiedzi:


9

Problem, z którym możesz się spotkać, polega na tym, że usunięcie plików w zatwierdzeniu nie zmienia faktu, że plik był na poprzednim obrazie, więc poprzedni obraz nadal ma rozmiar 14G.

Zajrzyj do części „Warstwy” w tym artykule: http://woudenberg.io/reducing-docker-image-size/

Aby rozwiązać ten problem, musisz usunąć rzeczy z / tmp / w oryginalnym zatwierdzeniu, które je wygenerowało, aby obraz utworzony w wyniku tego zatwierdzenia ich nie zawiera. Jest to łatwe, gdy używasz plików docker, ale nie jestem pewien, czy jest to możliwe podczas tworzenia obrazów z zatwierdzeniami.

Inną rzeczą, którą możesz zrobić, jest zgniatanie warstw poprzez eksportowanie / importowanie obrazu.


4

Rozszerzając odpowiedź @Juan Antonio, Dockerfilezrobienie tego nie pozwoli zaoszczędzić miejsca:

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

Zamiast tego musisz:

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

Z drugiej strony oznacza to mniej buforowania, jakby cokolwiek zmieniło się w tym dużym wierszu poleceń, Docker będzie musiał ponownie uruchomić cały zestaw poleceń.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.