Docker görüntü boyutu nasıl küçültülür


12

GlassFish'i çalıştıran kapım var. Bir görüntü yapmaya çalıştığımda 14GB oldu. Daha sonra, /tmp/10GB olan kapta sildim ve bir görüntü yapmaya çalıştım, ancak yine de görüntü 14GB. Kaptan dosya silme işleminin görüntü boyutuna yansımadığı görülüyor. Bu sorunu nasıl düzeltirim?


1
Kimse kurulumunuz hakkında biraz daha bilgi sahibi olmadan herhangi bir öneri yapamaz. Dockerfile nedir? Docker oluşturma bağlamına eklenen dosya ağacı nedir? Resmi glassfishDocker görüntüsü yaklaşık 1 GB. Bir Docker görüntüsü için oldukça büyük olsa da, hala inşa ettiğinizden çok daha küçük.
Andy Shinn

Bir howto için bu SO sorusuna bakın . Ayrıca, bu Google aramasında birkaç alakalı makale bulunmaktadır.
Misha Brukman

Yanıtlar:


9

Karşılaşabileceğiniz sorun, bir taahhütte dosyaları kaldırmanın, dosyanın önceki bir görüntüde olduğu gerçeğini değiştirmemesi, böylece önceki görüntünün hala 14G olması.

Bu makaledeki "Katmanlar" bölümüne göz atın: http://woudenberg.io/reducing-docker-image-size/

Bu sorunu çözmek için / tmp / altındaki şeyleri, onları oluşturan orijinal işlemden kaldırmanız gerekir, böylece bu işlemin sonucu olarak oluşturulan görüntü bunları içermez. Dockerfiles kullanırken bu kolaydır, ancak taahhütlü görüntüler oluştururken mümkünse emin değilsiniz.

Yapabileceğiniz başka bir şey, görüntüyü dışa / içe aktararak squash katmanlarıdır.


4

@Juan Antonio'nun cevabını genişletmek, Dockerfilebunu yapmak yerden tasarruf etmeyecektir:

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

Bunun yerine yapmanız gerekenler:

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

Aşağı tarafta, bu, büyük komut satırında herhangi bir değişiklik olursa, Docker'ın tüm komut kümesini yeniden çalıştırması gerekeceği gibi daha az önbellekleme anlamına gelir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.