Comparez la différence entre dockerfile avant et après docker-slim

procédure

  #Exemple de nœud.Créer une image Docker pour l'application js
~ $ git clone https://github.com/docker-slim/examples.git

  # node_Accédez au répertoire où se trouve le Dockerfile ubuntu
~ $ cd examples/node_ubuntu/

  #Construire Dockerfile et créer une image
~ $ docker build -t my/sample-node-app .

  #Pour l'image créée, docker-Appliquer mince
~ $ docker-slim build my/sample-node-app

Quelle est la réduction de taille? ??

~ $ 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

Le bas est l'image d'origine et le haut est l'image optimisée. Il semble que ".slim" soit ajouté à la fin de l'image optimisée par docker-slim. La taille est réduite de 414 Mo à 14 Mo. Que ce passe-t-il? ..

comparaison des fichiers docker

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"]

La clause FROM est passée d'ubuntu: 14.04 à zéro. FROM scratch signifie qu'il n'y a pas de base, et cela semble indiquer qu'il est écrit à partir de la partie OS de base. Il semble que la partie OS soit gérée par files.tar, qui est censé être une version compressée du système de fichiers ADD ubuntu.

Lien de référence

Recommended Posts

Comparez la différence entre dockerfile avant et après docker-slim
À propos de la différence entre irb et pry
[Java] Comprendre la différence entre List et Set
[iOS] Comprendre la différence entre le cadre et les limites
[Rails / Active Record] À propos de la différence entre créer et créer!
Comprenez la différence entre les classes abstraites et les interfaces!
Quelle est la différence entre SimpleDateFormat et DateTimeFormatter? ??
Différence entre vh et%
Différence entre i ++ et ++ i
[Ruby] J'ai réfléchi à la différence entre each_with_index et each.with_index
[Rails] Quelle est la différence entre la redirection et le rendu?
[JAVA] Quelle est la différence entre interface et abstract? ?? ??
Quelle est la différence entre ignorer et en attente? [RSpec]
[Swift] UITextField m'a appris la différence entre nil et ""
Différence entre produit et variante
Différence entre redirect_to et render
Différence entre redirect_to et render
Différence entre CUI et GUI
Différence entre mockito-core et mockito-all
Différence entre classe et instance
Différence entre l'installation de bundle et de bundle
Différence entre ArrayList et LinkedList
Différence entre render et redirect_to
Différence entre List et ArrayList
Différence entre .bashrc et .bash_profile
Différence entre StringBuilder et StringBuffer
Différence entre render et redirect_to
Différence entre Java et JavaScript (comment trouver la moyenne)
Quelle est la différence entre une action et une méthode d'instance?
[Java] Vérifiez la différence entre orElse et orElseGet avec IntStream
Remplaçons la différence entre == (identité) et méthode equals (équivalence)
La différence entre la programmation qui utilise des classes Ruby et la programmation qui n'utilise pas
[Ruby] Différence entre obtenir et publier
Différence entre la méthode d'instance et la méthode de classe
Trouvez la différence entre les types de liste
Différence entre interface et classe abstraite
[Java] Différence entre Hashmap et HashTable
[Terminal] Différence entre irb et pry
JavaServlet: différence entre executeQuery et executeUpdate
[Ruby] Différence entre is_a? Et instance_of?
Différence entre l'opérateur == et la méthode eqals
Différence approximative entre RSpec et minitest
[Rails] Différence entre find et find_by
Différence entre la variable d'instance et la variable de classe
[JAVA] Différence entre abstrait et interface
Différence entre Thymeleaf @RestController et @Controller
Différence entre Stream map et flatMap
Quelle est la différence entre un serveur Web et un serveur d'applications?
[Java] Différence entre array et ArrayList
Différence entre le type primitif et le type de référence