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.