Los contenedores de software son paquetes que contienen el código, las configuraciones y las dependencias necesarias de una aplicación. De esta manera, y compartiendo un sistema operativo instalado en el servidor, pueden ejecutarse como procesos aislados de los recursos físicos. Esto tiene grandes beneficios como, por ejemplo, realizar implementaciones rápidas, fiables y consistentes sea cual sea el entorno.
Se utilizan para garantizar que una aplicación funciona de igual manera sea cual sea el entorno en el que se ejecuta, aunque sea cambiante, de manera que lo haga siempre sin fallos. Es, en cierto sentido, algo similar a lo que se consigue con la virtualización y, de hecho, se puede decir que se trata de una especie de virtualización a nivel de sistema operativo.
Al ser componentes aislados, los procesos no pueden afectar a otros procesos de otros contenedores, de la misma manera en que tampoco influyen, ni afectan, al funcionamiento del equipo o el sistema operativo sobre los que se despliegan.
Estas son las características principales de los contenedores de software:
- Aislamiento. Un contenedor permite desplegar una o más aplicaciones en la misma máquina. Además, estas aplicaciones pueden operar en diferentes dominios y condiciones.
- Seguridad. El aislamiento de los contenedores los hace muy seguros ante cualquier agujero de seguridad que pueda aprovechar un atacante. El daño se limitaría a la aplicación o el código que se ejecuta dentro de ese contenedor, permaneciendo el resto del sistema inalterado.
- Virtualización y transparencia. La propia arquitectura de los contenedores proporciona un entorno virtualizado en el que se puede ocultar la visibilidad de los dispositivos físicos, de la configuración concreta del servidor y del sistema operativo. Esta visibilidad puede ser nula, o limitada, pero básicamente se trata de limitar la dependencia de la ejecución de aplicaciones del entorno sobre el que se ejecutan.
- Privilegios. Existen contenedores «con privilegios» y contenedores «sin privilegios». En general, los contenedores sin privilegios son más seguros que los que tienen privilegios, puesto que estos últimos se ejecutan sobre el sistema host en que se despliegan.
Con todo esto, se entiende que la abstracción del sistema operativo implica que el contenedor dispone de los recursos necesarios para ejecutar una aplicación en cualquier sistema. La virtualización a nivel de sistema operativo es muy eficiente porque no hay que virtualizar el SO: se trabaja directamente con el de la máquina física.
Cada contenedor lleva consigo las librerías necesarias para la aplicación: son unidades autocontenidas, y esto las hace más rápidas y eficientes que las máquinas virtuales. Eso sí, se hace necesaria una capa extra para la gestión de los contenedores. Se denomina conteinarization layer y sin ella no podríamos utilizar los contenedores de software.
Deja tu comentario sobre "¿Qué son los contenedores de software y qué utilidad tienen?"