Vergleichen Sie den Unterschied zwischen Docker-Datei vor und nach Docker-Slim

Verfahren

  #Beispielknoten.Erstellen Sie ein Docker-Image für die js-App
~ $ git clone https://github.com/docker-slim/examples.git

  # node_Wechseln Sie in das Verzeichnis, in dem sich die Ubuntu-Docker-Datei befindet
~ $ cd examples/node_ubuntu/

  #Erstellen Sie eine Docker-Datei und erstellen Sie ein Image
~ $ docker build -t my/sample-node-app .

  #Für das erstellte Bild Docker-Schlank auftragen
~ $ docker-slim build my/sample-node-app

Wie hoch ist die Größenreduzierung? ??

~ $ docker images
    REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
    my/sample-node-app.slim   latest              b2c7843a52fa        3 hours ago         14MB
    my/sample-node-app        latest              3c6ddc217be2        4 hours ago         414MB

Das untere ist das Originalbild und das obere ist das optimierte Bild. Es scheint, dass ".slim" am Ende des von Docker-Slim optimierten Bildes hinzugefügt wird. Die Größe wird von 414 MB auf 14 MB reduziert. Was ist los? ..

Vergleich von Docker-Dateien

Dockerfile-before


FROM ubuntu:14.04
RUN apt-get update && \
		apt-get install -y curl software-properties-common python-software-properties && \
		add-apt-repository ppa:chris-lea/node.js && \
		apt-get update && \
		apt-get install -y build-essential \
		nodejs && \
		mkdir -p /opt/my/service
COPY service /opt/my/service
WORKDIR /opt/my/service
RUN npm install
EXPOSE 1300
ENTRYPOINT ["node","/opt/my/service/server.js"]

Dockerfile-after


FROM scratch
LABEL docker-slim.version="darwin|Transformer|1.32.0|10b628fc3cd9f903237b9c31a6aba5ac4e6bc9c8|2020-08-24_06:14:32AM"
ENV PATH "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

ADD files.tar /
WORKDIR /opt/my/service
EXPOSE 1300/tcp
ENTRYPOINT ["node","/opt/my/service/server.js"]

Die FROM-Klausel wurde von Ubuntu: 14.04 in Scratch geändert. VON Grund auf neu bedeutet, dass es keine Basis gibt, und scheint darauf hinzudeuten, dass es vom Basis-Betriebssystemteil geschrieben wurde. Es scheint, dass der Betriebssystemteil von files.tar verwaltet wird, einer komprimierten Version des ADD-Ubuntu-Dateisystems.

Referenzlink

Recommended Posts

Vergleichen Sie den Unterschied zwischen Docker-Datei vor und nach Docker-Slim
Über den Unterschied zwischen irb und pry
[Java] Verstehe den Unterschied zwischen List und Set
[iOS] Verstehe den Unterschied zwischen Frame und Grenzen
[Rails / Active Record] Über den Unterschied zwischen create und create!
Verstehe den Unterschied zwischen abstrakten Klassen und Schnittstellen!
Was ist der Unterschied zwischen SimpleDateFormat und DateTimeFormatter? ??
Unterschied zwischen vh und%
Unterschied zwischen i ++ und ++ i
[Ruby] Ich habe über den Unterschied zwischen each_with_index und each.with_index nachgedacht
[Rails] Was ist der Unterschied zwischen Redirect und Rendering?
[JAVA] Was ist der Unterschied zwischen Schnittstelle und Zusammenfassung? ?? ??
Was ist der Unterschied zwischen Überspringen und Ausstehend? [RSpec]
[Swift] UITextField hat mir den Unterschied zwischen Null und "" beigebracht.
Unterschied zwischen Produkt und Variante
Unterschied zwischen redirect_to und render
Unterschied zwischen redirect_to und render
Unterschied zwischen CUI und GUI
Unterschied zwischen Mockito-Core und Mockito-All
Unterschied zwischen Klasse und Instanz
Unterschied zwischen Bundle und Bundle-Installation
Unterschied zwischen ArrayList und LinkedList
Unterschied zwischen render und redirect_to
Unterschied zwischen List und ArrayList
Unterschied zwischen .bashrc und .bash_profile
Unterschied zwischen StringBuilder und StringBuffer
Unterschied zwischen render und redirect_to
Unterschied zwischen Java und JavaScript (wie man den Durchschnitt findet)
Was ist der Unterschied zwischen einer Aktion und einer Instanzmethode?
[Java] Überprüfen Sie den Unterschied zwischen orElse und orElseGet mit IntStream
Überschreiben wir den Unterschied zwischen == (Identität) und der Methode equals (Äquivalenz).
Der Unterschied zwischen der Programmierung mit Ruby-Klassen und der Programmierung ohne Ruby-Klassen
[Ruby] Unterschied zwischen get und post
Unterschied zwischen Instanzmethode und Klassenmethode
Finden Sie den Unterschied zwischen Listentypen
Unterschied zwischen Schnittstelle und abstrakter Klasse
[Java] Unterschied zwischen Hashmap und HashTable
[Terminal] Unterschied zwischen irb und pry
JavaServlet: Unterschied zwischen executeQuery und executeUpdate
[Ruby] Unterschied zwischen is_a? Und instance_of?
Unterschied zwischen dem Operator == und der Methode eqals
Grober Unterschied zwischen RSpec und Minitest
[Rails] Unterschied zwischen find und find_by
Unterschied zwischen Instanzvariable und Klassenvariable
[JAVA] Unterschied zwischen Abstract und Interface
Unterschied zwischen Thymeleaf @RestController und @Controller
Unterschied zwischen Stream Map und FlatMap
Was ist der Unterschied zwischen einem Webserver und einem Anwendungsserver?
[Java] Unterschied zwischen Array und ArrayList
Unterschied zwischen primitivem Typ und Referenztyp