En esta ocasión os quiero hablar de una cosa que normalmente se nos suele pasar por alto a la mayoría de nosotros cuando trabajamos con los contenedores Docker.
Y es el sistema operativo sobre el que se ejecutan los contenedores, no tanto sobre el que se ejecuta el motor de contenedores, sino sobre el sistema operativo sobre el que se ejecuta nuestro contenedor.
Sobre el contenedor que nos basamos a la hora de crear la imagen.
Los contenedores Docker
Esto de los contenedores está muy bien porque realmente nos proporcionan un servidor que no tenemos que configurar, ya está configurado y simplemente nosotros metemos nuestra aplicación.
Con lo cual como desarrolladores esto lógicamente es una funcionalidad muy interesante.
Sí que es cierto que normalmente los desarrolladores solemos tener una cierta tendencia a no preocuparnos de estas cosas de infraestructura.
Pero realmente esa aplicación que nosotros estamos corriendo sobre un servidor de aplicaciones, típicamente por ejemplo un JBoss eap o un Wildfly etcétera, tienen por debajo unas librerías de un sistema operativo.
Contenedores seguros
La cuestión es que ese sistema operativo nos puede afectar. Ya que tenemos que tener en cuenta que ese sistema operativo tiene bugs y tiene normalmente parches de seguridad que van saliendo.
Con lo cual si nosotros no nos preocupamos de mantener actualizado el sistema operativo sobre el que está ejecutándose en nuestro contenedor podemos tener unos problemas de seguridad.
Se puede ver un ejemplo en las imágenes que están en el Docker Hub, que es el repositorio más popular de imágenes de contenedores. La mayor parte de las imágenes tienen serios problemas de librerías.
Quizás normalmente la última versión es la que puede tener los parches más actualizados.
Lógicamente porque normalmente se han generado hace poco tiempo con lo cual se basa en un sistema operativo que ya tiene corregido todas las vulnerabilidades.
Pero realmente las versiones un poquito más viejas podemos ver que realmente suelen tener bastantes problemas.
Para verlo simplemente tenemos que entrar en el hub de docker. Loguearnos. Ir a la imagen que estemos utilizando, que queramos utilizar y ver cuál es el estado de la seguridad.
Lógicamente si somos mínimamente exigentes con la seguridad de nuestra infraestructura estas imágenes no las podríamos utilizar en producción.
En el resto internos sí que se pueden utilizar pero no en producción.
Mantener actualizado los contenedores
Cuando queramos utilizar contenedores tenemos que tener la seguridad de que tenemos un soporte sobre el sistema operativo sobre el que se están ejecutando esos contenedores. Y en general de toda la infraestructura que está por debajo de nuestra aplicación.
Podemos encargarnos nosotros o utilizar un proveedor que nos proporcione esta base actualizada.
Más sobre contenedores
Si queréis pues ampliar conocimientos sobre el tema de los contenedores podéis echar un vistazo a mis cursos sobre contenedores y sobre openshift.
OpenShift es un poco la evolución de los contenedores más orientados a entornos empresariales. Por qué sí que es cierto que un contenedor lo podemos utilizar en nuestro portátil para hacer unas pruebas a nuestro desarrollo. Pero cuando ya entramos en lo que es el uso en entornos empresariales, entornos grandes pues los contenedores se nos quedan un poquito cortos y necesitamos herramientas como openshift
Os dejo el video en el que comentos más sobre este tema