Ich experimentiere in letzter Zeit mit Docker. Ich versuche, eine Bildarchitektur zu erstellen, die so aussieht, dass sie leicht zu pflegen und zu erweitern ist. Warum unterscheiden sich geerbte Docker-Bilder in der Größe
Ich baute Bilder mit folgenden Dockerfiles und bin neugierig auf unterschiedliche Behältergrößen. Warum unterscheiden sie sich so sehr?
Nach base/Dockerfile Ergebnisse in einem 210,9 MB Bild (ubuntu: trusty mit 188 MB, so dass in Ordnung ist).
FROM ubuntu:trusty
RUN apt-get -qq update && \
DEBIAN_FRONTEND=noninteractive apt-get -qq install \
nano
ENV TERM xterm
RUN apt-get -y autoremove && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
Apache/Dockerfile Ergebnisse in 224,4 MB.
FROM ubuntu:trusty
RUN apt-get -qq update && \
DEBIAN_FRONTEND=noninteractive apt-get -qq install \
nano \
apache2
ENV TERM xterm
RUN apt-get -y autoremove && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
COPY apache2-foreground /usr/local/bin/
RUN chmod a+x /usr/local/bin/apache2-foreground
EXPOSE 80
WORKDIR /var/www/html
CMD ["apache2-foreground"]
Apache-PHP/Dockerfile Ergebnisse in 266,7 MB.
Das ist in Ordnung, aber wir haben bis jetzt keine Vererbung verwendet. Lassen Sie uns einen Blick:
Warum Apache-PHP-on-base/Dockerfile Ergebnis in 289,4 MB? Es sind im Grunde die gleichen Schritte, aber in zwei Bilder aufgeteilt. Ich hätte ein wenig Overhead erwartet, aber nicht etwa 10%.
FROM base
# + apache-php/Dockerfile without "install nano"
Es ist noch größer Mehrfachvererbung: Apache-PHP-on-Apache-on-base/Dockerfile Ergebnisse in 314,9 MB.
FROM apache-on-base
# + apache-php/Dockerfile without "install nano apache2"
Wo Apache-on-base/Dockerfile natürlich ist (was zu 247 MB ):
FROM base
# + apache/Dockerfile without "install nano"
Frage: Gibt es eine Möglichkeit, Bilder von den Anbau dieser großen verhindern unter Beibehaltung der Wartbarkeit?
Update: Umsetzung ThaJeznahs Vorschläge bekam ich folgende :) Danke nochmal!
REPOSITORY TAG IMAGE ID CREATED SIZE
apache-php-on-aob latest 2cf12a3b5872 2 minutes ago 249.9 MB
apache-on-base latest 121c8a098ff5 3 minutes ago 203.7 MB
base latest ee95e4f8aaee 3 minutes ago 189.3 MB
apache-php-on-aob v1 e43df5e61aed 3 days ago 314.9 MB
apache-on-base v1 c291f91f1a10 3 days ago 247 MB
base v1 b181fc6f181d 3 days ago 210.9 MB
ubuntu trusty 97434d46f197 10 days ago 188 MB
Versuchen Sie, "Docker History" auf Ihren Bildern zu laufen und Sie können sehen, welche Ebenen größer/kleiner zwischen den Bildern sind, um genau zu bestimmen, woher der zusätzliche Bloat kommt. –
tpbowden