2016-03-29 15 views
1

Genellikle, büyük dosya işlemlerinden sonra ÇALIŞTIR komutu temizlenirse, sonuçta elde edilen katman boyutunun daha küçük olacağı anlaşılır. Ancak, aşağıdaki komut dosyasını çalıştırdığımda, sonuçta oluşan katman büyüktür ve başlangıçta kopyalanan ve temizlenen dosyaların boyutlarına karşılık gelir.Dockerfile RUN, temizlemede bile yağ tabakası oluşturur

Kopyalanan dosyalar aynı katmanda temizlenirse, bu katman boyutu nasıl işlenir?

RUN mkdir -p /etc/puppet && \ 
    cd /etc/puppet && \ 
    apt-get update && apt-get install -y wget puppet && \ 
    wget -rnH --level=10 -e robots=off --reject "index.html*" http://somefileserver.org/puppet/allpuppetstuff && \ 
    puppet module install puppetlabs/stdlib && \ 
    puppet module install 7terminals-java && \ 
    puppet apply -e "include someserver" && \ 
    apt-get purge -y --auto-remove puppet wget && \ 
    rm -rfv /etc/puppet/* && \ 
    rm -rfv /var/lib/apt/lists/* 
+0

Deneme yapmayı deneyin: “RUN” komutunuzdan önceki görüntüyü kullanarak bir kapsayıcıdaki kabuğunu başlatın. Daha sonra, kullanımı kontrol etmek için 'df' kullanarak, başlangıçta "apt-get update" 'i çalıştırdıktan sonra,' apt-get-purge '' den sonra ve diğer tüm dosyaları sildikten sonra disk alanına bakın. –

+0

belki de "apt-get install -y --no-install-recommends wget kukla" denemelisiniz – user2915097

cevap

1

Birkaç ayrıntıdan sonra bazı ayrıntıları buldum.

Daha yeni bir katman önceki dosyada kalıcı bir dosya değiştiriliyorsa, eski katmanda docker kopyaları görünüyor. Bu, işlem sonunda toplam dosya boyutu farkı az olsa bile, yukarıdaki ÇALIŞMA komutu tarafından oluşturulan yağ katmanının sebebidir. Bunu söylemek için herhangi bir kaynak bulamadım, ama şu ana kadarki deneyim. Temel olarak, görüntü ile ilgili dosya işlemleri her zaman bir katmanda yapılmalıdır.