1.1 Estado del Arte
Si vemos cualquier informe sobre el uso de Docker nos sorprenderá la gran aceptación que ha tenido. Este cambio de paradigma en el mundo del software ha facilitado mucho las cosas a base de añadir una abstracción sobre el despliegue de nuestras aplicaciones.
Entiendo que es responsabilidad de todos entender y manejar estas abstracciones lo suficiente, como para poder hacer despliegues de forma segura.
Cuando vemos informes como "The state of Open Source Security Report 2022" de Snyk, podemos ver claramente la tendencia actual de tener cada vez más dependencia de otras librerías y observamos que no estamos todavía entendiendo el problema que ello supone, sino tenemos unas políticas claras en nuestra relación con el open source y en cómo vamos a mantener esas dependencias actualizadas (capítulo 2.2.1).
Con Docker, también introducimos más dependencias ya que consumiremos imágenes creadas por terceros (capítulo 3.1.1).
Si revisamos el historial de vulnerabilidades reportadas y parcheadas de Docker, nos damos cuenta que esta tecnología es bastante compleja, y si no estamos familiarizados con su arquitectura o su ciclo de vida difícilmente podremos entender cuando esas vulnerabilidades reportadas son un riesgo real para nuestros proyectos o nuestra organización.
Existe una idea creciente de que los contenedores son tan aislados, robustos, inmutables y seguros como los contenedores marítimos. La realidad es un poco distinta a esa imagen idealizada que tenemos. Se puede llegar a tener contenedores robustos y seguros, pero no es tan sencillo como mover contenedores marítimos con nuestra grúa imaginaria.
Fotografía de Bernd Dittrich
Como veremos a lo largo del libro, Docker se apoya en muchas tecnologías existentes para lograr ese concepto idealista de contenedor marítimo, entre otras en Kernel namespaces y Control Groups (capítulo 2.3).
A finales de 2020 corrió como la pólvora el anuncio de que Kubernetes en su versión 1.20.0 "retiraba el soporte a Docker" y el pánico se hizo presa de la comunidad. En realidad lo que hizo Kubernetes fue retirar el soporte a dockershim
.
Kubernetes llegó incluso a publicar una entrada en su blog explicando en detalle porque esto no sería un drama para nadie en realidad (salvo que usarás comandos de Docker directamente) y terminó añadiendo también un FAQ específico sobre este tema.
Personalmente, no me sorprende que se creara un gran alarmismo, ya que a día de hoy muchas personas siguen pensando que Docker es contenedores y que no existe nada más allá.
Información
El concepto de los contenedores ya existía antes de Docker y aunque mucho de la adopción de este patrón se lo debemos a Docker Inc, lo cierto es que existe un mundo gigante donde ya tenemos la Cloud Native Computing Foundation y se han creado varios estándares e iniciativas para normalizar esta tecnología de una forma sólida y homogénea.