tag remove library images imagenes hub dockers compose docker

docker - remove - Cómo gestionar las dependencias de imágenes de portón(mantenimiento)



dockers images (3)

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 (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. [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.

ACTUALIZACIÓN: encontré la siguiente imagen en el sitio de docker en su presentation . Sin embargo, no estoy seguro de cómo hacerlo (especialmente con dependencias de otras imágenes, como describí).


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:


Este es un gran caso de uso. Envíe una solicitud de mejora en la 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.


Siento que usar compilaciones de varias etapas también puede ser útil para evitar tales riesgos. Le ayudará a mantener un archivo docker único por aplicación.