Estoy trabajando para contener nuestra aplicación basada en microservicios Spring Boot usando Docker.
Al intentar escribir la imagen de la ventana acoplable, me di cuenta del sistema operativo base.
¿Cuál es el estándar de la industria para implementar contenedores docker en entornos de producción utilizando imágenes oficiales de docker hub?
por ejemplo: oracle/open jdk
¿Las imágenes oficiales se ocuparán de las vulnerabilidades y las correcciones?... ¿Tenemos que ocuparnos también de las vulnerabilidades en el sistema operativo base?.
Nota: Regularmente realizamos parches del sistema operativo en el sistema operativo del host
El "SO" en el que se basa una imagen de Docker es solo material del usuario, por lo que no es realmente un sistema operativo en el sentido tradicional. No puede comparar el riesgo de no mantenerlo completamente actualizado con el riesgo de no mantener un sistema operativo real completamente actualizado.
En cualquier caso: una forma de mitigar su preocupación es usar una imagen sin distribución como recomienda Google. La razón es que su aplicación está basada en Java, en realidad no necesita todas esas cosas de la tierra del usuario de cualquier distribución de Linux.
Otra ventaja de usar una imagen sin distribución es que el tamaño de la imagen de Docker se vuelve mucho más pequeño.
Goggle ha escrito algunas palabras sobre cómo mantienen actualizadas sus imágenes de Docker sin distribución. Google está basando sus imágenes en Debian. Puede preguntarse por qué se menciona un sistema operativo base, en este caso Debian, cuando al mismo tiempo afirma que la imagen es "sin distribución". Bueno, una aplicación Java no necesita un Shell, ni necesita ningún ejecutable del sistema operativo. No necesita grep , find , etc. Sin embargo, necesita ciertas bibliotecas del sistema operativo para estar allí. Y estas bibliotecas tienen que venir de alguna parte, en este caso Google ha elegido Debian. Para usted, como consumidor de la imagen, es completamente irrelevante que sea Debian.
Tenga en cuenta que si su aplicación Java realmente toca activamente el sistema operativo ( llamando a un comando externo del sistema operativo desde Java), entonces no puede usar la estrategia sin distribución. Pero muy, muy pocas aplicaciones de Java hacen eso y la mayoría de los desarrolladores de Java lo considerarían un antipatrón, ya que viola el principio WORA .
En general, para el escenario que describe, elegiría las imágenes Distroless de Google en lugar de usar la imagen oficial de openjdk .