GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Tamaño de imagen de Docker:¿cómo mantenerlo pequeño?

Introducción

Las imágenes de Docker son componentes esenciales que se utilizan para crear contenedores de Docker. Aunque están estrechamente relacionados, existen grandes diferencias entre las imágenes y los contenedores de Docker.

Una imagen acoplable es la base de un contenedor. Estas imágenes se crean escribiendo Dockerfiles, listas de instrucciones que se ejecutan automáticamente para crear una imagen Docker específica.

Al crear una imagen de Docker, debe asegurarse de mantenerla liviana. Evitar imágenes grandes acelera la construcción y la implementación de contenedores. Por lo tanto, es crucial reducir al mínimo el tamaño de la imagen.

Siga leyendo para saber cómo mantener pequeñas las imágenes de Docker.

Usar una base de imagen más pequeña (Alpine)

Para crear una imagen de Docker, necesita una base sobre la cual pueda instalar y agregar componentes, según sea necesario. Puede descargar una imagen principal existente y usarla como base de su propia imagen o crear una desde cero.

Instala una variación de un sistema operativo como base de una imagen. La base del sistema operativo puede afectar drásticamente el tamaño de la imagen final de Docker, por lo que decidir cuál es la correcta juega un papel importante.

Linux creó una alternativa útil que es liviana y tiene un entorno POSIX mínimo:Alpine. Esta base de imagen de distribución de Linux tiene solo 5 MB, construida alrededor de musl libc y BusyBox.

En comparación con otras imágenes del sistema operativo, Alpine tiene un tamaño mucho más pequeño. La imagen del sistema operativo más descargada, Ubuntu, tiene 188 MB, mientras que Alpine solo tiene 5 MB.

Usar un archivo .dockerignore

Excluir ciertos archivos que no son necesarios para su imagen puede ayudarlo a reducir el tamaño de la imagen. Ahí es donde el .dockerignore entra el archivo.

Al crear una imagen, escribe un Dockerfile con especificaciones de cómo debería verse esa imagen.

Al delinear el contexto de compilación, también es importante incluir un archivo .dockerignore y almacenarlo en la misma carpeta que el Dockerfile.

Esta característica de Docker se inicia con docker run . El sistema comprueba si existe dicho archivo y aplica sus excepciones e ignora las reglas. De esa manera, elimina cualquier contenido irrelevante del contexto construido.

Utilice la función de compilaciones de varias etapas en Docker

Docker introdujo la función de varias etapas en su versión 17.05. Permite a los usuarios dividir el Dockerfile en varias etapas.

Cada etapa comienza con un FROM instrucción. El artefacto requerido pasa a la siguiente etapa, dejando contenido que no necesitará en el artefacto de imagen final.

Dado que el proceso solo transfiere los componentes necesarios del artefacto, no es necesario que limpie manualmente después de cada instrucción.

Con la función de varias etapas, evita agregar capas innecesarias, lo que tiene un impacto considerable en el tamaño general de la imagen.

Evite agregar capas innecesarias para reducir el tamaño de la imagen de Docker

Una imagen de Docker ocupa más espacio con cada capa que le agregas. Por lo tanto, cuantas más capas tenga, más espacio requerirá la imagen.

Cada RUN La instrucción en un Dockerfile agrega una nueva capa a su imagen. Es por eso que debe intentar manipular archivos dentro de un solo RUN dominio. Además, combine diferentes comandos en una sola instrucción usando el && opción.

Por ejemplo, puede actualizar el repositorio e instalar varios paquetes en un solo RUN instrucción. Para obtener una línea clara y completa, use la barra invertida (\ ) para escribir el comando en varias líneas.

Además de actualizar e instalar los paquetes, también debe limpiar el caché de apt con && rm -rf /var/lib/apt/lists/* para ahorrar algo más de espacio.

RUN apt-get update && apt-get install -y\
         [package-one] \
         [package-two] 
   && rm -rf /var/lib/apt/lists/*

Cuidado con las actualizaciones y los paquetes y dependencias innecesarios

Otra forma de ahorrar espacio y mantener pequeña la imagen de Docker es asegurarse de que está ejecutando la última versión de la plataforma en la que está construyendo.

Al tener la versión más reciente, evita actualizaciones extensas que descargan innumerables paquetes rpm y ocupan mucho espacio.

La instalación de un paquete también suele incluir la descarga de dependencias en las que se basa el software. Sin embargo, a veces la descarga también almacenará paquetes que no son necesarios pero sí recomendados.

Dichos paquetes no deseados pueden acumularse y consumir mucho espacio en disco. Para descargar solo las dependencias principales, agregue --no-install-recommends opción al comando de instalación.

Por ejemplo:

RUN apt-get install --no-install-recommends [package-one]

Consejo adicional:almacenamiento en caché

Aunque este consejo no afecta el tamaño general de la imagen de Docker, sí ayuda con compilaciones de Docker más rápidas.

Docker acelera la creación de imágenes al almacenar en caché localmente las capas existentes de un Dockerfile y usarlo para reconstruir imágenes más rápido.

Por ejemplo, imagine que tiene un Dockerfile simple que consta de tres capas. Una vez que crea una imagen a partir de ese archivo, el sistema almacena automáticamente en caché estas tres capas. La próxima vez que cree la imagen, se cargará desde la memoria caché local.

Si decide modificar la imagen y cambiar una de las capas, el caché no se utilizará para nada después de la capa modificada.

Recomendamos ordenar las instrucciones de una manera que mejore la eficiencia y utilice la función de almacenamiento en caché. Coloque las instrucciones que probablemente cambien lo más bajo posible en el Dockerfile.


Ubuntu
  1. Cómo mover imágenes de Docker entre hosts

  2. Cómo reducir el tamaño de la imagen de Docker:6 métodos de optimización

  3. Cómo usar un Dockerfile para crear una imagen de Docker

  4. Cómo compartir imágenes de Docker con otros

  5. Cómo crear una imagen personalizada desde un contenedor Docker

Docker:Cómo usarlo de manera práctica - Parte 3

Cómo instalar Docker en Ubuntu 20.04, 18.04, 21.04

Cómo instalar la imagen de AlmaLinux 8 en Docker Container

Cómo crear una imagen de Docker desde un contenedor en ejecución

Cómo reducir el tamaño de la imagen de Docker en los contenedores de Docker

Cómo crear una imagen Docker personalizada con Dockerfile