¿Qué son los contenedores?

Un contenedor es un paquete de software ligero e independiente que encapsula un entorno de ejecución completo y que incluye una aplicación y sus dependencias (bibliotecas, archivos binarios y todo archivo de configuración adicional), lo que incrementa la portabilidad, escalabilidad, seguridad y agilidad de una aplicación.

Los contenedores gozan de popularidad entre los desarrolladores y los operadores por ofrecer una forma sencilla de implementar y gestionar aplicaciones, independientemente del entorno de destino. Facilitan las prácticas de DevOps y DevSecOps al mejorar la transferencia de tareas entre el equipo de desarrollo y el de operaciones.

Además, como consumen los recursos de manera eficiente, facilitan unos índices elevados de densidad y utilización de recursos. Aunque los contenedores se pueden utilizar con casi cualquier aplicación, se suelen asociar a los microservicios, en los que múltiples contenedores ejecutan diferentes componentes o servicios de aplicaciones. Lo habitual es que los contenedores que componen una aplicación se coordinen y gestionen mediante una plataforma de coordinación de contenedores, como Kubernetes.

Los contenedores se crean empaquetando aplicaciones a partir de múltiples imágenes procedentes de uno o más repositorios, junto con cualquier biblioteca u otras dependencias de las aplicaciones. De este modo, se eliminan los problemas de portabilidad y compatibilidad.

Una nueva forma de crear contenedores para Kubernetes

Una nueva forma de crear contenedores para Kubernetes

Las sinergias entre contenedores y máquinas virtuales

Diferencias entre contenedores y máquinas virtuales

Cada máquina virtual ejecuta una instancia completa o parcial de un sistema operativo, mientras que varios contenedores comparten una única instancia del sistema operativo. Un contenedor incluye todo lo necesario para ejecutar una aplicación, lo que permite que múltiples aplicaciones contenedorizadas se ejecuten de forma independiente en un único sistema host. Dado que se pueden ejecutar varios contenedores dentro de una máquina virtual, las dos tecnologías se pueden utilizar juntas.

¿Cuáles son las ventajas de usar contenedores?

El uso de contenedores para crear aplicaciones acelera la distribución de nuevas características y fomenta un entorno de innovación continua. Entre las ventajas, se incluyen las siguientes:

Agilidad. Una mayor agilidad de los desarrolladores impulsa el aumento de la productividad y la velocidad de desarrollo de aplicaciones. Los contenedores optimizan los flujos de integración y distribución continuas (CI/CD) y son la solución idónea para los equipos de DevOps y las implementaciones de microservicios.

Escalabilidad y alta disponibilidad. Al usar Kubernetes, las implementaciones de contenedores se pueden ampliar o reducir automáticamente a medida que cambian los requisitos de las cargas de trabajo. Así aumenta la disponibilidad de las aplicaciones.

Portabilidad. Los contenedores utilizan menos recursos y son más ligeros que las máquinas virtuales. Las aplicaciones contenedorizadas son independientes de la infraestructura y funcionan de la misma manera estén donde estén implementadas.

Flexibilidad. Una aplicación contenedorizada se aísla y se desvincula del sistema operativo y de otros contenedores; un contenedor puede fallar sin que eso afecte a otros contenedores en ejecución.

Estándares de los contenedores

Los estándares para los formatos de contenedores y los entornos de ejecución están controlados por Open Container Initiative (OCI), un proyecto creado en 2015 con el propósito específico de crear estándares de código abierto. Actualmente, OCI ofrece dos especificaciones: la de tiempo de ejecución (runtime-spec) y la de imagen (image-spec).

Seguridad de los contenedores

Los contenedores requieren cambios en la forma en que se implementan y gestionan las políticas de seguridad. La seguridad debe integrarse en el ciclo de vida de los contenedores en la medida de lo posible, utilizando un enfoque de DevSecOps. Los equipos de seguridad, en colaboración con el equipo de desarrollo y el de operaciones, adaptan las políticas de control y conformidad existentes para incorporar nuevas herramientas y cambios en el ciclo de vida de las aplicaciones.

Automatización de contenedores

El esfuerzo manual ralentiza a los equipos de desarrollo. La automatización de contenedores permite a los desarrolladores centrarse en el código en lugar de en los paquetes. Las imágenes de los contenedores se crean en capas. Al usar un enfoque automatizado para la creación de contenedores, cada vez que cambia una capa, solo es necesario actualizar esa capa. Por ejemplo, si la actualización necesaria se limita a las bibliotecas del sistema, solo se tiene que volver a crear la capa que contiene estas. Dado que las demás capas no cambian, se reduce la carga que suponen las pruebas y la validación y, de este modo, los contenedores actualizados pueden pasar al entorno de producción con mayor rapidez y frecuencia.

Docker

Desde su introducción en 2013, Docker ha sido casi sinónimo de contenedores, y se sigue utilizando para crear imágenes de contenedores. El entorno de Docker incluye un entorno de ejecución de contenedores, así como la creación de contenedores y la gestión de imágenes. Puesto que Docker crea una imagen de contenedor estándar de OCI, las imágenes de Docker se podrán ejecutar en cualquier entorno de ejecución de contenedores compatible con OCI.

Kubernetes

Kubernetes es un coordinador de contenedores de código abierto que se ha convertido en un estándar «de facto». Kubernetes automatiza la implementación, el balanceo de carga, la asignación de recursos y la aplicación de políticas de seguridad para los contenedores mediante la automatización y la configuración declarativa. Permite que las aplicaciones contenedorizadas funcionen de manera continua en el estado deseado, lo que garantiza que sean adaptables y flexibles. La coordinación de contenedores ayuda a gestionar la complejidad del ciclo de vida de los contenedores. Esta ventaja es de especial importancia para las aplicaciones distribuidas con un gran número de contenedores.
Kubernetes está migrando hacia la interfaz del entorno de ejecución de contenedores (CRI), que admite un conjunto más amplio de entornos de ejecución de contenedores con una interoperabilidad eficaz entre diferentes entornos de ejecución. En diciembre de 2020, se anunció que el entorno de ejecución de Docker dejaría de estar disponible para su uso con Kubernetes.

Casos de uso de contenedores

Para desarrolladores

  • Mejore la portabilidad de las aplicaciones en diferentes plataformas y configuraciones para que el código desarrollado en una versión de un compilador o intérprete de lenguajes funcione sin problemas en versiones posteriores sin necesidad de revisarlo.
  • Alivie a los desarrolladores de tener que utilizar la misma infraestructura para el desarrollo, las pruebas y las implementaciones, de modo que los desarrolladores que escriben código en sus portátiles puedan estar seguros de que la aplicación funcionará de la forma deseada en cualquier otra infraestructura, ya sea en un servidor local o en una máquina virtual basada en la nube.
  • Facilite procesos de desarrollo ágiles, como CI/CD, para acelerar la aceptación y la implementación del código.

Para operaciones de TI

  • Mejore la seguridad de las aplicaciones aislándolas de otras aplicaciones mediante un enfoque ligero.
  • Migre sin complicaciones las aplicaciones contenedorizadas a diferentes versiones de sistemas operativos, topologías de red (o configuraciones de almacenamiento) y plataformas de nube.
  • Mejore la eficiencia del equipo de TI permitiendo que varios contenedores de aplicaciones se ejecuten en una sola instancia del sistema operativo. Dado que los contenedores suelen tener un tamaño de decenas de megabytes, mientras que las máquinas virtuales suelen tener un tamaño de diez o más gigabytes, se puede ejecutar un número considerablemente mayor de contenedores en una sola instancia del servidor.

Ofrezca una escalabilidad extrema según las necesidades al activar instancias adicionales de contenedores en milisegundos en lugar de los minutos que se tarda en activar máquinas virtuales.

Productos y soluciones relacionados

Modernización de aplicaciones con Kubernetes

Ofrezca Kubernetes preparado para los desarrolladores en el centro de datos o la nube.

Contenedores creados a partir de código fuente para Kubernetes

VMware Tanzu Build Service automatiza la creación, el control y la gestión de contenedores a escala empresarial.

Gestión multinube de Kubernetes

VMware Tanzu Mission Control es una plataforma de gestión de Kubernetes multinube que virtualiza la nube ofreciendo una plataforma coherente basada en Kubernetes que permite gestionar, utilizar y distribuir aplicaciones según las necesidades en cualquier nube.