Compromisos de diseño en las capas de Docker y OCI

Fuentes: Design compromises in Docker and OCI layers

Las capas de Docker y OCI, aunque se describen comúnmente como archivos tar comprimidos, presentan limitaciones técnicas significativas que afectan su funcionamiento. El artículo analiza cómo la reutilización de la tecnología tar para gestionar conjuntos de cambios de sistemas de archivos ha creado soluciones de trabajo que introducen complejidad y vulnerabilidades. A diferencia de lo que sugiere la metáfora de una pila de capas inmutables, un archivo tar no puede eliminar archivos de capas anteriores; solo puede añadir o modificar entradas. Para resolver esto, el sistema emplea mecanismos como 'whiteouts' (archivos de nombre especial) y directorios opacos, que son extensiones hackeadas del estándar original de tar. Esta aproximación implica que las capas no son archivos independientes, sino conjuntos de cambios que solo tienen sentido cuando se aplican en orden secuencial. La inmutabilidad de las capas es fundamental para el caché, la distribución por contenido y el compartir capas base, pero la implementación actual requiere que el sistema de archivos de Docker (como overlay2) gestione estas capas como directorios extraídos y apilados mediante un sistema de archivos de unión. Este diseño, aunque pragmático y bien entendido, genera una brecha de impedancia entre la simplicidad de tar y la necesidad de gestionar diffs de sistemas de archivos, lo que obliga a usar convenciones y atajos que no son elegantes desde una perspectiva de ingeniería pura.