3 Containers in the clouds illustration
Jump to section

¿Qué es un contenedor de Linux?

Copiar URL

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 se pueden trasladar y mantienen la uniformidad desde la etapa de desarrollo hasta las de prueba y producción. Gracias a esto, se pueden utilizar mucho más rápido que los canales de desarrollo, que deben replicar los entornos de prueba tradicionales. Debido a que los contenedores son populares y fáciles de usar, también constituyen una parte importante de la seguridad de la TI.

Imagínese que quiere desarrollar una aplicación. Usted trabaja en una computadora portátil, y su entorno tiene una configuración específica. Es posible que otros desarrolladores tengan configuraciones algo diferentes. La aplicación que está desarrollando se basa en esa configuración y responde a bibliotecas, dependencias y archivos específicos. Mientras tanto, su empresa cuenta con entornos de desarrollo y producción estandarizados que tienen sus propios conjuntos de archivos de respaldo y configuraciones. Usted quiere emular esos entornos tanto como sea posible de forma local, pero sin asumir los costos que implica tener que recrear los entornos del servidor. Entonces… ¿Cómo puede lograr que su aplicación funcione en estos entornos, pase el control de calidad y se implemente fácilmente, sin que sea necesario volver a escribirla ni reparar muchos errores? La respuesta es simple: con los contenedores.

What is a container

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 graves consecuencias. En realidad, el contenido de una imagen de contenedor puede considerarse como la instalación de una distribución de Linux, ya que incluye paquetes RPM y archivos de configuración, entre otros. Sin embargo, la distribución de las imágenes de contenedores es mucho más sencilla que la instalación de nuevas copias de los sistemas operativos. De esta forma, se evitan los inconvenientes y todos pueden trabajar con tranquilidad.

Aunque este es un ejemplo sencillo, los contenedores de Linux pueden aplicarse a varios problemas que requieran portabilidad, capacidad de configuración y aislamiento. Su objetivo es generar desarrollos con rapidez para satisfacer las necesidades comerciales a medida que surgen. En algunos casos, como en la transmisión de datos de manera instantánea con Apache Kafka, los contenedores son fundamentales porque son la única forma de proporcionar la capacidad de ajuste que necesita una aplicación. Los contenedores siempre satisfacen la demanda, sin importar si se encuentran en una infraestructura local, de nube o en una combinación de ambas. Sin embargo, elegir la plataforma correcta es tan importante como los contenedores mismos.

Red Hat® OpenShift® tiene todo lo que se necesita para la nube híbrida, los contenedores empresariales, y el desarrollo y las implementaciones de Kubernetes.

No exactamente; más bien, son conceptos que se complementan. A continuación, encontrará una forma sencilla de comprenderlos:

  • La virtualización permite que sus SO (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 para ARM ejecutan contenedores de Linux para ARM; los sistemas Linux x86 ejecutan contenedores de Linux x86; y 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.

virtualization vs containers

¿Qué significa esto? Para empezar, la virtualización utiliza un hipervisor para emular el hardware, lo cual permite que varios sistemas operativos se ejecuten de forma conjunta. Sin embargo, este proceso no es tan ligero como los contenedores. Si tiene recursos limitados con funciones que también lo son, necesita aplicaciones ligeras que se puedan implementar de forma masiva. Gracias a que los contenedores de Linux se ejecutan en el sistema operativo y lo comparten con todos los demás contenedores, sus aplicaciones y servicios siguen siendo ligeros y se ejecutan rápidamente en paralelo.

Los contenedores de Linux son otro salto evolutivo en nuestra forma de desarrollar, implementar y gestionar las aplicaciones. Las imágenes de contenedores de Linux brindan portabilidad y control de versiones, lo cual garantiza que lo que funciona en la computadora portátil de un desarrollador también lo haga en la etapa de producción. En comparación con las máquinas virtuales, un contenedor de Linux en ejecución utiliza 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 varios contenedores se pueden organizar en distintas nubes.

Incluso hay herramientas que combinan la organización de los contenedores con la gestión de las máquinas virtuales. Obtenga más información en el temario del evento Red Hat Summit 2020, que incluye una sesión de trabajo sobre esta herramienta en particular.

El proyecto Linux Containers (LXC) es una plataforma de contenedores open source que proporciona un conjunto de herramientas, plantillas, bibliotecas y enlaces entre lenguajes. Cuenta con una interfaz de línea de comandos sencilla que mejora la experiencia de los usuarios a la hora de comenzar a trabajar con los contenedores.

Asimismo, el proyecto ofrece un entorno de virtualización para el sistema operativo que puede instalarse en varios sistemas basados en Linux. Es posible que su distribución de Linux lo ofrezca a través del repositorio de paquetes.

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 dividir 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, a través del proyecto VServer de Jacques Gélinas, se introdujo en Linux la implementación de un entorno aislado. Una vez que se estableció esta base para múltiples espacios de usuario controlados en Linux, comenzó a tomar forma lo que hoy conocemos como un contenedor de Linux.

Así, cada vez se combinaron más tecnologías, con mayor rapidez, para hacer realidad este enfoque centrado en el aislamiento. 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 ellos. Además, los grupos de control utilizan systemd, un sistema de inicio que configura el espacio de usuario y gestiona sus procesos, para proporcionar mayor control de estos procesos aislados. Ambas tecnologías agregaron más control a Linux y posibilitaron que los entornos pudieran mantenerse separados de manera exitosa.

La aparición de Docker

En 2008, Docker entró 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 herramientas e ideas novedosas: una interfaz de línea de comandos sencilla para ejecutar y diseñar nuevas imágenes en capas, un daemon de servidor, una biblioteca de imágenes de contenedores previamente diseñ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 las imágenes, la distribución y el tiempo de ejecución. La combinación de las especificaciones permite que los proyectos de la comunidad, los productos comerciales y los proveedores de nube desarrollen tecnologías de contenedores capaces de trabajar juntas (si, por ejemplo, necesitara insertar imágenes diseñadas de forma personalizada en el servidor de registros de un proveedor de nube, sería indispensable que dicha interacción funcionara correctamente). En la actualidad, Docker y Red Hat, entre otros, son miembros de la Open Container Initiative (OCI), y permiten alcanzar una estandarización abierta de las tecnologías de contenedores en todo el sector.

Los contenedores son muy conocidos, pero ¿qué tan seguros son? Son muchos los factores que afectan la seguridad de los contenedores: por un lado, se debe proteger la aplicación y el proceso de los contenedores, así como la infraestructura y los entornos de implementación; y por el otro, se necesita un plan de integración con las herramientas y las políticas de seguridad de la empresa. Para ello, necesita una estrategia, y 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 eso nos dedicamos. Y luego brindamos asistencia para esas tecnologías. Por eso estamos aquí para ayudarlo.

Las tecnologías de Red Hat despejan todas las dudas acerca del uso de los contenedores. ¿Necesita que sus equipos de desarrollo trabajen en una plataforma diseñada para los contenedores? ¿Desea ejecutar la infraestructura de contenedores en un sistema operativo de primera categoría? ¿Quiere ofrecer soluciones de almacenamiento para la gran cantidad de datos que generan los contenedores? Entonces, las soluciones de Red Hat son ideales para usted.

Keep reading

ARTÍCULO

Diferencias entre los contenedores y las máquinas virtuales

Las máquinas virtuales (VM) y los contenedores de Linux son entornos informáticos empaquetados que combinan varios elementos de TI y los aíslan del resto del sistema.

ARTÍCULO

¿Qué es la organización de los contenedores?

La organización en contenedores automatiza la implementación, la gestión, la escalabilidad y la conexión en red de los contenedores.

ARTÍCULO

¿Qué es un contenedor de Linux?

Un contenedor de Linux es un conjunto de procesos separados del resto del sistema, los cuales pueden ejecutarse desde una imagen diferente que proporciona todos los archivos necesarios para que funcionen.

Más información sobre los contenedores

Productos

Red Hat OpenShift

Plataforma de contenedores de Kubernetes empresarial con operaciones automatizadas integrales para gestionar implementaciones de nube híbrida, multicloud y edge computing.

Contenido adicional

Lista de verificación

Desarrollo de aplicaciones en contenedores: cinco temas para analizar con su equipo

Ebook

Los tres aspectos más importantes que debe tener en cuenta a la hora de seleccionar una plataforma de Kubernetes

Capacitación

Curso de capacitación gratuito

Running Containers with Red Hat Technical Overview

Curso de capacitación gratuito

Containers, Kubernetes and Red Hat OpenShift Technical Overview

Curso de capacitación gratuito

Developing Cloud-Native Applications with Microservices Architectures

Illustration - mail

Obtenga más contenido como este

Suscríbase a nuestro boletín informativo: Red Hat Shares.