La preparación de las mejores prácticas Dockerfile

Consulte el artículo original -http: //bjbsair.com/2020-03-22/tech-info/5550/

La preparación de las mejores prácticas Dockerfile

Aunque Dockerfile simplifica el proceso de creación de imagen, y este proceso puede ser versionado, pero una gran cantidad de tiempo a la gente para construir el espejo, hay un impulso - el posible uso de lo que se empaquetan en el espejo. Tal uso incorrecto puede conducir a muchos problemas Dockerfile:

  • Espejo ventana acoplable demasiado. Si utiliza a menudo un espejo o espejos edificio, se encontrará con el tipo de espejo grande, e incluso algunos pueden llegar a más de 2G
  • construcción espejo ventana acoplable demasiado tiempo. Cada generación tendrá mucho tiempo de creación de imágenes con frecuencia para (como prueba de la unidad), donde esto podría ser un gran problema
  • La duplicación de esfuerzos. La mayor parte del contenido entre múltiples edificio espejo es exactamente el mismo y repetitivo, pero cada vez que tenga que hacerlo de nuevo, perdiendo tiempo y recursos

Espero que los lectores puedan tener alguna comprensión del espejo estibador, leer este artículo sobre la necesidad de que al menos la premisa del conocimiento:

  • Acoplable a entender los conceptos básicos, corriendo a través del vaso
  • Döcker familiarizado con los conceptos básicos del espejo, conocer la estructura jerárquica del espejo
  • Lo mejor es responsable de la construcción de un espejo ventana acoplable (comando use cargador de muelle de construcción para crear una imagen de espejo de mí mismo)

Dockerfile y creación de imagen

Dockerfile se compone de una instrucción, cada instrucción correspondiente a la capa final del espejo. La primera palabra de cada línea es que toda la cadena de comando, seguido de los parámetros de este comando, el comando de apoyo Dockerfile y su uso, puede hacer referencia a la documentación oficial, no repetiremos aquí.

Cuando ejecute el comando ventana acoplable acumulación, todo el proceso de construcción es la siguiente:

  1. Enviar archivos a un demonio ventana acoplable lee Dockerfile
  2. Leer todos los archivos en el directorio actual (contexto), enviados al demonio ventana acoplable
  3. Dockerfile para analizar, procesar en un comando con los parámetros correspondientes a la estructura
  4. bucle de pedido a través de todo el sistema, procesamiento de llamadas correspondiente a cada uno las funciones de procesamiento de comandos
  5. Cada comando (excepto FROM) se llevan a cabo en un solo recipiente, se genera un resultado de la ejecución de una nueva imagen
  6. Etiquetar su imagen generada por último

Algunas de las mejores prácticas para la escritura de Dockerfile

  1. Utilice una imagen de base unificada
    ================

Algunos artículos hablarán optimizar imagen a lo más pequeño posible para promover el uso de la imagen de base, tales como busybox o alpino y así sucesivamente. Recomiendo el uso de una imagen base unificada que estamos más familiarizados, como Ubuntu, CentOS, etc, debido a que la imagen de base puede ser compartida sólo tiene que descargar una vez, y no causará demasiado espacio de almacenamiento se desperdicia. Su ventaja es que estos espejos ecológica más completa, fácil de instalar nuestro software, además de depurar el problema.

  1. Estático y separación dinámica
    =======

Y no va a cambiar el contenido básico de que cambia con frecuencia para separar, al menos el cambio en el contenido subyacente, cree que el uso de una base diferente para el espejo superior. Por ejemplo, puede crear una imagen de base en varios idiomas, python2.7, python3.4, go1.7, Java7 y así sucesivamente, estas imágenes contienen la biblioteca más básico del lenguaje, cada grupo puede seguir generación de imagen a nivel de aplicación anterior a.

  1. principio de mínima: Instalar sólo las cosas necesarias
    ================

Cuando una gran cantidad de personas para construir el espejo, hay un impulso - cosas podrían utilizar son empaquetados en el espejo. Para poner freno a esta idea, el espejo debe contener sólo las cosas necesarias , todo lo que pueden o no tener no poner en el interior. Debido a que el espejo es fácil de ampliar, y el contenedor de tiempo de ejecución es también muy fácil de modificar. Esto asegura que el espejo lo más pequeño posible, tan pronto como sea posible cuando se construye, sino también para asegurar el futuro de una transmisión más rápida, recursos de red más económico.

  1. Un principio: Cada imagen es sólo una función
    ==================

No ejecutar varios procesos en un contenedor de diferentes funciones, cada espejo solamente instalar paquetes de software y presentar una solicitud, es necesario interactuar con el programa para comunicarse a través de la vaina (kubernetes característicos de siempre) o entre la red de contenedores. Esto asegura que, diferentes aplicaciones modulares pueden separar mantenimiento y actualización, un solo espejo se pueden reducir de tamaño.

  1. El uso de menos capas
    =========

Aunque parece comandos diferentes para tratar de separar, escrito en varios comandos fácil de leer y entender. Sin embargo, esto dará lugar a la aparición de muchos capa de espejo, y difícil de gestionar y analizar el espejo, y la capa de espejo está limitado. Contenidos relacionados con la medida de lo posible en la misma capa, una división saltos de línea, por lo que el tamaño de la imagen pueden reducirse aún más, y la imagen para facilitar el historial de visualización.

RUN apt-get update\  
  && apt-get install -y --no-install-recommends \  
  bzr \  
  cvs \  
  git \  
  mercurial \  
  subversion \  
  && apt get clean  
复制代码
  1. La reducción del contenido de cada capa
    ==========

A pesar de que la instalación debe solamente el contenido, este proceso puede también producir archivos de contenido o temporales adicionales, tenemos que tratar de hacer algo cada instalación se mantiene al mínimo.

  • Por ejemplo, utilizando el --no-install-recommends parámetro indica paquete apt-get no instalar la recomendada
  • Después de instalar el paquete, / var / lib / lista / apto claro / cache
  • Eliminar archivos intermedios: por ejemplo, descargar el paquete comprimido
  • Eliminar archivos temporales: Si el comando crea archivos temporales, sino también una oportuna borrado
  1. No modifique los permisos de archivo solo en Dockerfile en
    ============================

Debido a que la imagen cargador de muelle es en capas, cualquier cambio será añadir una capa de modificar los permisos de archivo o directorio también. Si hay un comando para modificar los permisos grandes archivos individuales o directorios, poner una copia de estos documentos, que pueden conducir fácilmente a un gran espejo.

La solución es sencilla, ya sea añadiendo permisos de usuario y poner el conjunto de archivos antes de la Dockerfile o script de inicio (punto de entrada) en un recipiente para hacer estos cambios, o copiar archivos y modificar permisos no ponen juntos (que al final sólo se ha incrementado capa).

  1. Usar caché para acelerar la velocidad de la construcción
    ===================

Si acoplable encontrar una capa ya existe, se utilizará directamente la capa ya existe, y no se ejecutará de nuevo una vez. Si se ejecuta de forma continua acumulación ventana acoplable en múltiples ocasiones, se encuentra la segunda pasada terminó pronto.

Pero a partir de la liberación 1.10, condujo a la introducción de contenido direccionable eficacia de almacenamiento de función de caché, ahora introducido --cache-de parámetro para especificar un espejo manualmente usando su caché.

  1. El control de versiones y la construcción automatizado
    ============

Dockerfile preferible poner juntos y el correspondiente control de versiones código de la aplicación, a continuación, puede crear automáticamente el espejo. La ventaja es que se puede realizar un seguimiento del contenido de cada versión del espejo, fácil de entender los diferentes espejo cuál es la diferencia, para depurar y hacer retroceder en su conjunto.

Además, si está ejecutando un espejo parámetros o variables de entorno son muchos, sino también un documento que corresponde dar instrucciones, y la documentación que se actualizan con el cambio Dockerfile, por lo que cualquiera puede hacer referencia a un documento fácilmente usando un espejo, en lugar de descargar la imagen no sé cómo utilizar.

Artículos originales publicados 0 · ganado elogios 0 · Vistas 294

Supongo que te gusta

Origin blog.csdn.net/zxjoke/article/details/105085212
Recomendado
Clasificación