¿Qué es el Contenedor? Definición | Desarrollo de software

Los contenedores y la virtualización basada en contenedores han estado de moda en el desarrollo de software en los últimos años. Este es un enfoque de virtualización en el que todo el nivel de virtualización se implementa como una aplicación dentro del sistema operativo. A diferencia de la virtualización clásica, aquí no se utiliza un «hipervisor». Las aplicaciones en contenedores tienen acceso directo al kernel del sistema operativo host y se utilizan principalmente debido a su alta flexibilidad y portabilidad.

Contenedores en detalle

Desde que el software abierto Docker se presentó al público en general en 2013, ha atraído el interés de desarrolladores y arquitectos de TI. El proyecto innovador en ese momento prometía revolucionar el panorama de TI, así como la virtualización ha hecho hace un par de años. En los últimos años, la tecnología de envases se ha establecido en todos los ámbitos. 

Sin embargo, quedan muchas preguntas sin respuesta: ¿Son la mejor alternativa a las técnicas tradicionales de virtualización o son simplemente otra forma de virtualizar e implementar aplicaciones en la nube? Que tanto IBM como Red Hat y Microsoft participan activamente en el desarrollo posterior de Docker, sin embargo, sugiere que esta es una tecnología preparada para el futuro.

Entonces, ¿Qué es el contenedor y dónde se usa? Los contenedores están destinados principalmente a permitir que el software se ejecute de manera confiable en diferentes plataformas sin ajustes importantes. Por ejemplo, sucede una y otra vez que los desarrolladores tienen que enviar el código escrito desde su propia computadora al entorno de prueba. De allí se transfiere a producción después de pruebas exitosas.

Dado que el código se envía en un contenedor, no se requiere una configuración y administración extensas por parte del destinatario. Si bien todo esto suena práctico, también tiene algunas desventajas. Si los entornos de desarrollo y sistema operativo no son idénticos, pueden surgir problemas. Por ejemplo, si el desarrollador usa Python 3.0 pero la producción usa la versión 2.7, muchas cosas pueden salir mal con la ejecución del código. Surgen problemas similares cuando, por ejemplo, se usa Red Hat Linux para programación y Suse Linux se usa en producción.

¿Qué ventajas ofrece el contenedor?

En la virtualización tradicional, un paquete de software consta de una máquina virtual (VM), un sistema operativo y una aplicación. Un servidor dedicado con cuatro máquinas virtuales debería proporcionar cuatro sistemas operativos separados a través de un hipervisor. En comparación, un servidor con cuatro aplicaciones en contenedores solo tiene que proporcionar un sistema operativo compartido por los cuatro contenedores.

En términos concretos, esto significa que los contenedores consumen significativamente menos recursos que las máquinas virtuales tradicionales. Debido a esto, puede ejecutar una mayor cantidad de contenedores en un solo servidor que en una máquina virtual. Otro beneficio importante de los contenedores es que pueden arrancar muy rápidamente. Si bien los servidores virtuales tardan unos minutos en iniciarse en muchos casos, las aplicaciones en contenedores están disponibles casi de inmediato.

En vista de estas enormes ventajas, surge naturalmente la pregunta de por qué los contenedores no han reemplazado por completo las técnicas tradicionales de virtualización. La razón principal de esto es la seguridad, ya que los contenedores no son tan seguros como las máquinas virtuales tradicionales. Una posible vulnerabilidad de seguridad en el sistema operativo puede afectar a todos los demás contenedores que se ejecutan en el mismo sistema operativo. Los contenedores no ofrecen el mismo nivel de aislamiento al que uno está acostumbrado con las técnicas tradicionales de virtualización.

Más bien un complemento que un reemplazo completo

Más bien un complemento que un reemplazo completo
Más bien un complemento que un reemplazo completo

Los contenedores deben considerarse un complemento de las máquinas virtuales tradicionales en lugar de un reemplazo completo. Por ejemplo, los contenedores se pueden ejecutar en máquinas virtuales ligeras, lo que introduce una capa adicional de aislamiento y, por lo tanto, aumenta significativamente la seguridad. Además, todo el hardware (servidores, redes, almacenamiento) debe seguir gestionándose mediante virtualización para que los contenedores no cambien nada. Los contenedores no se pueden utilizar como un reemplazo completo de las máquinas virtuales porque se basan en la virtualización.

Además, ahora hay una gran cantidad de distribuciones de Linux que se especializan en contenedores. Además de CoreOS y Snappy Ubuntu, esto también incluye Red Hats Project Atomic y Photon de VMware. Microsoft también invierte mucho en tecnologías de contenedorización para que Docker se pueda utilizar en plataformas de servidor de Windows y en el contexto de la nube de Azure.

Docker y otras tecnologías basadas en contenedores

Docker es la herramienta más conocida del segmento de tecnología de contenerización, que permite la creación y operación de contenedores. Sin embargo, el envasado no es una tecnología nueva. Como parte de varias distribuciones de Linux, los contenedores en forma de LXC se han utilizado durante casi dos décadas. Además, Oracle, Sun, Solaris y FreeBSD ofrecen herramientas similares para crear y operar contenedores.

No te vayas sin leer: ¿Qué es una GUI?

Docker se ha enfrentado a una competencia destacada a lo largo de los años . Una muy buena alternativa es la herramienta de línea de comandos «rkt» de CoreOS. La principal ventaja de esta herramienta es que puede manejar tanto contenedores propios como Docker sin problemas. Sin embargo, Rkt está dirigido básicamente a empresas más pequeñas, mientras que Docker está diseñado principalmente para su uso en grandes entornos de nube.

Deja un comentario