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?
- 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] - 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.