Pregunta Cómo gestionar las dependencias de imágenes de portón (mantenimiento)


Con Docker, puedes crear imágenes basadas en otras imágenes muy bien. Por ejemplo, puede crear una imagen Java-jdk7 (basada en la última versión de Ubuntu LTS) y, basándose en ella, crear imágenes elástica-search y tomcat7 (ambas necesitan Java).

Entonces, si no etiqueto mis imágenes, termino con lo siguiente (extracto de docker images)

╔══════════════════════╦════════╦══════════════╗
║      REPOSITORY      ║  TAG   ║      ID      ║
╠══════════════════════╬════════╬══════════════╣
║ ubuntu               ║ 12.04  ║ 8dbd9e392a96 ║
║ quintenk/jdk7-oracle ║ latest ║ 8928245086f4 ║
║ quintenk/tomcat7     ║ latest ║ 995cdb2cbfa8 ║
║ quintenk/elastics    ║ latest ║ 123abc456ef2 ║
╚══════════════════════╩════════╩══════════════╝

Ahora para la pregunta. ¿Cómo debo / debo mantener esta dependencia? ¿Cómo realizo el mantenimiento de una 1 imagen y las imágenes dependientes también?

  1. Si actualizo mi imagen jdk (apt-get upgrade por ejemplo), supongo que no corrompe las imágenes dependientes? Sin embargo, también asumo que el árbol de dependencias no es como esperarías más. [ACTUALIZACIÓN: He reproducido esto, así que vea mi propia respuesta a continuación]
  2. Si 1 es correcto, ¿hay alguna forma de que pueda hacer que las imágenes dependientes se muestren desactualizadas y (con suerte) las reconstruya?

¿O es el camino a seguir para etiquetar los contenedores con un número de versión y reconstruir y redistribuir manualmente todas las dependencias con etiquetas de número de versión aumentado? Eso significaría que los Dockerfiles necesitarían ser alterados para una actualización.

ACTUALIZAR: Encontré la siguiente imagen en el sitio de docker en su presentación. Sin embargo, no estoy seguro de cómo hacerlo (especialmente con dependencias de otras imágenes, como describí).

Update flow for docker containers


32
2017-07-30 09:34


origen


Respuestas:


Este es un gran caso de uso. Por favor, envíe una solicitud de mejora en el Página de problemas de Docker.

Una forma simple por el momento es mantener los archivos Docker y actualizar desde allí, reconstruyendo las imágenes cuando desee realizar un cambio deliberado.


9
2017-07-30 17:41



En respuesta a

Si actualizo mi imagen jdk (por ejemplo, apt-get upgrade), ¿supongo que no corrompe las imágenes dependientes? Sin embargo, también asumo que el árbol de dependencias no es como esperarías más.

Lo he verificado actualizando una imagen dependiente y revisando las dependencias. Lo que obtienes es de hecho un estado válido, pero la imagen dependiente no se basa en la imagen que ingenuamente esperarías más:

docker dependency tree


5
2017-07-31 08:27



Me siento usando construcciones de múltiples etapas también puede ser útil para evitar tales dificultades. Le ayudará a mantener un archivo docker único por aplicación.


0
2018-05-21 00:16