Buscar

Español

Español

Iniciar sesión

Iniciar sesión/Registrar

Websites

Contenedores

¿Qué es un contenedor de Linux?

Un contenedor de Linux® es un conjunto de uno o más procesos separados del resto del sistema. Todos los archivos que se necesitan para ejecutarlos provienen de una imagen diferente, lo cual significa que los contenedores de Linux son portátiles y uniformes durante todas las etapas: desarrollo, prueba y producción. Esto los hace mucho más rápidos que los canales de desarrollo que necesitan replicar entornos de prueba tradicionales. Debido a su popularidad y facilidad de uso, los contenedores también son una parte importante de la seguridad de TI.


¿Para sirven los contenedores?

¿Qué es un contenedor?

Imagínese que quiere desarrollar una aplicación. Usted trabaja en una computadora portátil, y su entorno tiene una configuración específica. Las configuraciones pueden variar un poco respecto de las de otros desarrolladores. La aplicación en proceso de desarrollo se basa en esa configuración y depende de archivos, bibliotecas y dependencias específicos. Mientras tanto, su empresa cuenta con entornos de desarrollo y producción que están estandarizados con sus propias configuraciones y sus propios conjuntos de archivos compatibles. Desea emular esos entornos tanto como sea posible hacerlo de forma local, pero sin los gastos que genera tener que recrear los entornos del servidor. Entonces, ¿cómo logra que su aplicación funcione en estos entornos, que pase el control de calidad y que se implemente sin demasiadas dificultades, sin tener que volver a escribirla ni que solucionar muchos problemas? Es simple: con los contenedores.

El contenedor donde se encuentra su aplicación tiene las bibliotecas, las dependencias y los archivos necesarios para que pueda pasar a la etapa de producción sin ninguna consecuencia grave. En realidad, el contenido de una imagen en contenedor puede considerarse como una instalación de una distribución de Linux, ya que incluye paquetes RPM, archivos de configuración, etc. Sin embargo, la distribución de las imágenes en contenedores es mucho más fácil que la instalación de nuevas copias de los sistemas operativos. Si se evitan las crisis, todos estarán felices.

Este es un ejemplo sencillo, pero los contenedores de Linux se pueden aplicar a los problemas de muchas formas diferentes, donde se requiere la máxima portabilidad, capacidad de configuración y aislamiento. El objetivo de los contenedores de Linux es generar desarrollos con mayor rapidez y satisfacer las necesidades comerciales a medida que van surgiendo. En algunos casos, como con la transmisión de datos en tiempo real de Apache Kafka, los contenedores son fundamentales porque son la única forma de proporcionar la escalabilidad que necesita una aplicación. Los contenedores siempre satisfacen la demanda, sin importar la infraestructura en que se encuentren (on-premise, en la nube o en una combinación de ambas). Sin embargo, la elección de la plataforma correcta para los contenedores es tan importante como los contenedores mismos.


¿Y no se trata simplemente de una virtualización?

No exactamente. Considérelo más como un complemento. A continuación, encontrará una forma sencilla de entender ambos aspectos:

  • La virtualización permite que sus sistemas operativos (Windows o Linux) se ejecuten simultáneamente en un solo sistema de hardware.
  • Los contenedores comparten el mismo kernel del sistema operativo y separan los procesos de las aplicaciones del resto del sistema. Por ejemplo, los sistemas Linux ARM ejecutan contenedores de Linux ARM, los sistemas Linux x86 ejecutan contenedores de Linux x86, los sistemas Windows x86 ejecutan contenedores de Windows x86. Los contenedores de Linux son muy portátiles, pero deben ser compatibles con el sistema subyacente.

la virtualización frente a los contenedores

¿Qué significa esto? Para los principiantes, la virtualización utiliza un hipervisor para emular el hardware que permite que varios sistemas operativos se ejecuten en paralelo. Pero ese hipervisor no es tan ligero como los contenedores. Si tiene recursos limitados con capacidades también limitadas, necesitará aplicaciones ligeras que se puedan implementar de forma masiva en un mismo entorno. Los contenedores de Linux se ejecutan de forma nativa en el sistema operativo y lo comparten con todos los demás contenedores, para que sus aplicaciones y servicios sigan siendo ligeros y se ejecuten rápidamente en paralelo.

Los contenedores de Linux son otro salto evolutivo en nuestra forma de desarrollar, implementar y administrar las aplicaciones. Las imágenes en contenedores de Linux brindan portabilidad y control de versiones, lo cual garantiza que lo que funciona en la computadora portátil del desarrollador también funcione en la etapa de producción. En comparación con las máquinas virtuales, un contenedor de Linux en ejecución consume menos recursos, tiene una interfaz estándar (inicio, interrupción, variables del entorno, etc.), mantiene el aislamiento de las aplicaciones y se gestiona con mayor facilidad como parte de una aplicación más grande (varios contenedores). Además, las aplicaciones en múltiples contenedores se pueden organizar en distintas nubes.


¿En qué consiste el proyecto de contenedores de Linux?

El proyecto de contenedores de Linux (LXC) consiste en una plataforma de contenedores open source que proporciona un conjunto de herramientas, plantillas, bibliotecas y enlaces entre lenguajes. El LXC cuenta con una interfaz de línea de comandos sencilla que mejora la experiencia del usuario al utilizar los contenedores.

Asimismo, el LXC ofrece un entorno de virtualización a nivel del sistema operativo que puede instalarse en varios sistemas basados en Linux. Su distribución de Linux puede ofrecerlo a través de su repositorio de paquetes.


Una breve historia sobre los contenedores

Botón de descarga de la evolución de los contenedores

La idea de lo que ahora llamamos "tecnología de contenedores" surgió por primera vez en el año 2000 como FreeBSD jail, una tecnología que permite la partición de un sistema FreeBSD en varios subsistemas o "jaulas" (jails). Las jaulas se desarrollaron como entornos seguros que un administrador de sistemas podía compartir con distintos usuarios dentro o fuera de una empresa.

En 2001, se introdujo en Linux la implementación de un entorno aislado, a través del proyecto VServer de Jacques Gélinas. Una vez que se estableció para múltiples espacios de usuario controlados en Linux, comenzó a tomar forma lo que hoy es un contenedor de Linux.

Cada vez se combinaron más tecnologías, con mayor rapidez, para hacer realidad este enfoque. Los grupos de control (cgroups) son una función del kernel que controla y limita el uso de los recursos para un proceso o grupo de procesos. Además, los cgroups utilizan systemd, un sistema de inicialización que configura el espacio de usuario y gestiona sus procesos, para proporcionar mayor control de estos procesos aislados. Ambas tecnologías, que agregan más control a Linux, también fueron el marco para que los entornos pudieran tener éxito al permanecer separados.

Aparición de Docker

En 2008, Docker apareció en escena (a través de dotCloud) con su tecnología de contenedores que lleva el mismo nombre. La tecnología Docker incorporó una serie de conceptos y herramientas nuevos: una interfaz de línea de comandos sencilla para ejecutar y diseñar imágenes nuevas en capas, un daemon de servidor, una biblioteca de imágenes en contenedores prediseñadas y el concepto de un servidor de registros. Estas tecnologías combinadas permitieron que los usuarios diseñaran rápidamente nuevos contenedores en capas y los compartieran con otros sin ninguna dificultad.

Hay tres estándares importantes que garantizan la interoperabilidad de las tecnologías de contenedores: las especificaciones de la OCI en cuanto a la imagen, la distribución y el tiempo de ejecución. La combinación de tales especificaciones permite que los proyectos de la comunidad, los productos comerciales y los proveedores de nube diseñen tecnologías de contenedores con capacidad de interactuar (imagínese que necesitara incluir las imágenes diseñadas de forma personalizada en un servidor de registros del proveedor de nube; lo primero que necesitaría es que dicho servidor funcione). En la actualidad, Red Hat y Docker, entre otros, son miembros de la Open Container Initiative (OCI), y permiten lograr una estandarización abierta del sector de las tecnologías de contenedores.


¿Qué se puede decir de la seguridad de los contenedores?

Los contenedores son muy conocidos, pero ¿qué tan seguros son? Hay una gran cantidad de factores que afectan la seguridad de los contenedores: se debe proteger la aplicación y el proceso de los contenedores; la infraestructura y los entornos de implementación; y se necesita un plan de integración con las herramientas y las políticas de seguridad de la empresa. Necesita un plan, y nosotros podemos ayudarlo.


Nosotros podemos ayudarlo.

Red Hat goza de una larga trayectoria de trabajo en la comunidad open source para hacer que las tecnologías, como los contenedores, sean seguras, estables y confiables. A esto nos dedicamos. Y luego brindamos soporte para esas tecnologías. Por eso, estamos para ayudarlo si lo necesita.

Las tecnologías de Red Hat eliminan las conjeturas en cuanto a la forma correcta de hacer contenedores. ¿Necesita que sus equipos de desarrollo participen en una plataforma diseñada para los contenedores? ¿Desea ejecutar la infraestructura para los contenedores en un sistema operativo de primera categoría, o quiere ofrecer soluciones de almacenamiento para la gran cantidad de datos que estos generan? Entonces las soluciones de Red Hat son ideales para usted.

Los contenedores tienen mucho más que ofrecer