02 Optimizar contenedores
Optimizar contenedores
Table of Contents
Optimización: Identificación de archivos o dependencias innecesarias para crear imágenes de contenedores más pequeñas y eficientes.
El material de este ejercicio se realiza en la carpeta 2
Reducir el tamaño
Tenemos que optimizar el siguiente contenedor:
FROM docker.io/golang:alpine3.17 MAINTAINER Alejandro Escanero Blanco <alejandro.escanero@accenture.com> USER 0 # syntax=docker/dockerfile:1 WORKDIR /go/src/github.com/alexellis/href-counter/ COPY go.mod . COPY go.sum . COPY app.go . RUN apk –no-cache add ca-certificates && mkdir /data RUN go get -d -v golang.org/x/net/html \ && CGO_ENABLED=0 go build -a -installsuffix cgo -o app . && cp app /data/. RUN chgrp -R 0 /data && chmod -R g=u /data USER 1001 WORKDIR /data/ CMD [“./app”] |
¿Que tamaño tiene el contenedor al generarse? Ejecutar el comando para construir el contenedor:
docker build -t demo:01 -f Dockerfile1 . |
¿Podemos reducir el tamaño del mismo con multistage?¿Cuanto ganamos?
- El resultado del ejercicio está en Dockerfile2
¿Podemos reducirlo aún más usando scratch?¿Tiene sentido, que ventajas y desventajas?
- El resultado del ejercicio está en Dockerfile3
Dive
Dive (https://github.com/wagoodman/dive) es una herramienta que nos permite acceder visualmente a las distintas capas de un contenedor y ver cual es su contenido.
dive docker://demo:01 dive docker://demo:02 dive docker://demo:03 |
Slim
Slim (https://github.com/slimtoolkit/slim) es una herramienta que nos permite crear un contenedor nuevo desde otro ya existente fusionando las capas de tal manera que se elimina aquellos elementos que quedan ocultos.
Ejecutemos slim directamente en la carpeta y veremos todas las opciones que ofrece, por último ejecutaremos slim para reducir el tamaño del contenedor demo y comparar.
slim build –target demo:01 –tag demo:04 –http-probe=false –exec “/data/app” |