0

¿Qué son los contenedores y por qué los necesita?

DockerDocker irrumpió en escena en el 2013, y ha estado causando emoción en los círculos de TI desde entonces.

La tecnología de contenedores de aplicaciones proporcionada por Docker promete cambiar la forma en que se llevan a cabo las operaciones de TI, tal como la tecnología de virtualización lo hizo hace unos años.

He aquí las respuestas a 13 a las preguntas más comunes relacionadas con esta tecnología.

¿Qué son los contenedores y por qué los necesita?: Los contenedores son una solución al problema de cómo hacer que el software funcione de forma fiable cuando se traslada de un entorno informático a otro. Esto podría ser desde la portátil de un desarrollador hasta un entorno de prueba, desde un entorno de puesta en escena hasta el de producción, y tal vez desde una máquina física en un centro de datos a una máquina virtual en una nube privada o pública.

Los problemas surgen cuando el entorno del software de soporte no es idéntico, señala Solomon Hykes, el creador de Docker. “Usted hace la prueba con Python 2.7, y luego se ejecuta la producción en Python 3 y algo extraño sucede. O confía en el comportamiento de una determinada versión de una biblioteca SSL y se instala otra. Ejecuta sus pruebas en Debian y la producción está en Red Hat y todo tipo de cosas extrañas suceden”.

Y no es solo un software diferente lo que puede causar problemas, agregó. “La topología de red puede ser diferente, o las políticas de seguridad y el almacenamiento pueden ser diferentes, pero el software tiene que correr sobre eso”.

¿Cuál es la diferencia entre contenedores y virtualización?: Con la tecnología de virtualización, el paquete que se puede pasar es una máquina virtual, e incluye todo un sistema operativo, así como la aplicación. Un servidor físico que ejecuta tres máquinas virtuales tendría un hipervisor y tres sistemas operativos independientes ejecutándose encima de él.

En contraste, un servidor que ejecuta tres aplicaciones en contenedor con Docker ejecuta un único sistema operativo y cada contenedor comparte el núcleo del sistema operativo con los otros contenedores. Las partes compartidas del sistema operativo son de solo lectura, mientras que cada contenedor tiene su propio montaje (es decir, una forma de acceder al contenedor) para la escritura. Esto significa que los contenedores son mucho más ligeros y utilizan mucho menos recursos que las máquinas virtuales.

¿Qué otros beneficios ofrecen los contenedores?: Un contenedor puede tener solo decenas de megabytes de tamaño, mientras que una máquina virtual con su propio sistema operativo completo puede tener varios gigabytes de tamaño. Debido a esto, un solo servidor puede alojar mucho más contenedores que máquinas virtuales.

Otro beneficio importante es que las máquinas virtuales pueden tardar varios minutos en arrancar sus sistemas operativos y comenzar a ejecutar las aplicaciones que alojan, mientras que las aplicaciones en contenedor pueden iniciarse casi al instante. Esto significa que los contenedores pueden ser instanciados de una manera “just in time” cuando son necesarios, y pueden desaparecer cuando ya no son necesarios, liberando recursos en sus hosts.

Un tercer beneficio es que la containerización permite una mayor modularidad. En lugar de ejecutar toda una aplicación compleja dentro de un único contenedor, la aplicación puede dividirse en módulos (como la base de datos, la interfaz de aplicaciones, etc.). Este es el llamado enfoque de microservicios. Las aplicaciones construidas de esta manera son más fáciles de manejar porque cada módulo es relativamente simple, y se pueden hacer cambios a los módulos sin tener que reconstruir toda la aplicación. Debido a que los contenedores son muy ligeros, los módulos individuales (o microservicios) pueden ser instanciados solamente cuando son necesarios y están disponibles casi inmediatamente.

¿Cuál es la diferencia entre Docker y contenedores?: Docker se ha convertido en sinónimo de tecnología de contenedores, ya que ha sido el más exitoso en la popularización de la misma. Pero la tecnología de contenedores no es nueva; se ha incorporado en Linux en forma de LX desde hace más de 10 años, y la virtualización similar a nivel de sistema operativo también ha sido ofrecida por las jaulas FreeBSD, Particiones de Carga de Trabajo (WPAR) AIX y Contenedores Solaris.

¿Hay un formato de contenedor estándar?: En el 2015, una compañía llamada CoreOS produjo su propia especificación App Container Image (ACI) que era diferente de la especificación de contenedores de Docker, y en ese momento existía el riesgo de que el movimiento de los recientes contenedores populares fragmentaría los formatos contenedores rivales de Linux.

Los patrocinadores del proyecto incluyen a AWS, Google, IBM, HP, Microsoft, VMware, Red Hat, Oracle, Twitter, y HP, así como a Docker y CoreOS.

¿Por qué todas estas empresas que participan en la Open Container Initiative?: La idea de la OCI es asegurar que los bloques de construcción fundamentales de la tecnología de contenedores (como el formato de contenedor) estén estandarizados para que todos puedan sacar provecho de ellos.

Esto significa que en lugar de gastar recursos en desarrollo de tecnologías competidoras de contenedores, las organizaciones puedan centrarse en el desarrollo del software adicional necesario para apoyar el uso de contenedores estandarizados en un entorno empresarial o una nube. El tipo de software necesario incluye sistemas de orquestación y gestión de contenedores y sistemas de seguridad de contenedores.

¿Hay sistemas de gestión de contenedores gratuitos de código abierto?: Sí. Probablemente el sistema gratuito y de código abierto para gestión de contenedores más ampliamente utilizado es Kubernetes, el cual es un proyecto de software que se originó en Google. Kubernetes proporciona mecanismos para la instalación, mantenimiento y escalado de aplicaciones en contenedores.

¿Qué soluciones comerciales de gestión de contenedores existen hoy en día?: Docker Enterprise Edition es quizás la solución de gestión comercial de contenedores más conocida. Proporciona una plataforma integrada, probada y certificada para las aplicaciones que se ejecutan sistemas operativos empresariales Linux o Windows y en proveedores de nube.

Pero hay muchos otros, y varios que son destacados tienen una capa de software propietario en torno a Kubernetes en el núcleo. Ejemplos de este tipo de productos de software de gestión incluyen:

Tectonics de CoreOS trae preempaquetados todos los componentes de código abierto requeridos para construir una infraestructura al estilo Google, y añade características comerciales adicionales, como una consola de gestión, integración SSO y Quay, un registro contenedor listo para la empresa.

Open Shift Container Platform de Red Hat es un producto on-premises (de implantación local) de plataforma-como-servicio, construido alrededor de un núcleo de containers de aplicación impulsado por Docker, con orquestación y gestión provista por Kubernetes, sobre la base de Linux Red Hat Enterprise.

Rancher de Rancher Labs es una solución de código abierto comercial que facilita la implementación y administración de contenedores en producción sobre cualquier infraestructura.

¿Qué tan seguros son los contenedores?: Muchas personas creen que los contenedores son menos seguros que las máquinas virtuales, porque si hay una vulnerabilidad en el núcleo de la máquina de contenedores, que podría proporcionar un canal de entrada a los contenedores que comparten la misma. Eso también es cierto con un hipervisor, pero dado que un hipervisor ofrece menos funcionalidad que un núcleo de Linux (que normalmente implementa sistemas de archivos, redes, controles de proceso de aplicación y así sucesivamente) presenta una superficie de ataque mucho más pequeña.

Pero en el último par de años se han dedicado grandes esfuerzos al desarrollo de software para mejorar la seguridad de los contenedores.

Por ejemplo, Docker (y otros sistemas de contenedores) incluyen ahora una infraestructura de firma permite a los administradores firmar imágenes de contenedor para evitar recipientes que no son de confianza sean desplegados.

También se ha desarrollado software de seguridad especializado en contenedores. Por ejemplo, Twistlock ofrece software que perfila el comportamiento esperado de un contendor y elabora listas blancas de procesos, actividades de red (tales como direcciones IP y puertos de origen y destino) e incluso ciertas prácticas de almacenamiento, de modo que cualquier comportamiento malicioso o inesperado puede ser marcado.

Otra empresa de seguridad de contenedores especialista llamada Polyverse tiene un enfoque diferente. Aprovecha el hecho de que los contenedores se pueden iniciar en una fracción de segundo para relanzar aplicaciones en contenedores en un estado bueno conocido cada pocos segundos para minimizar el tiempo que un hacker tiene para explotar una aplicación que se ejecuta en un contenedor.

¿Qué distribuciones de Linux son adecuadas para su uso como host de contenedores?: La mayoría de las distribuciones de Linux son innecesariamente pesadas si su uso previsto es simplemente para actuar como host de contenedores para ejecutar contenedores. Por esa razón, una serie de distribuciones de Linux han sido diseñadas específicamente para correr contenedores.

Algunos ejemplos incluyen:
Container Linux(anteriormente CoreOS Linux), uno de los primeros sistemas operativos ligeros de contenedores construidos para contenedores.

RancherOS, una distribución simplificada de Linux construida a partir de contenedores, específicamente para correr contenedores.

Photon OS, un contenedor mínimo de Linux, optimizado para funcionar en plataformas VMware.

Proyect Atomic Host, el sistema operativo de contenedor ligero de Red Hat tiene versiones que se basan en CentOS y Fedora, y también hay una versión empresarial en Linux Red Hat Enterprise.

Ubuntu Core, la versión más pequeña de Ubuntu, Ubuntu Core está diseñado como un sistema operativo host para dispositivos IoT y despliegues de contenedores de nube a gran escala.

¿Qué pasa si usted tiene una instalación Windows?: Además de ejecutarse en cualquier distribución de Linux que corra la versión 3.10 (o posterior) del kernel de Linux, Docker también se ejecuta en Windows.

Eso es porque en el 2016 Microsoft introdujo la posibilidad de ejecutar contenedores de Windows en Windows Server 2016 y Windows 10. Estos son contenedores Docker diseñados para Windows, y se pueden administrar desde cualquier cliente Docker o desde el PowerShell de Microsoft.

(Microsoft también introdujo contenedores Hyper-V, que son contenedores Windows que se ejecutan en una máquina virtual Hyper-V para aislamiento añadido).

Los contenedores de Windows pueden ser desplegados en una instalación estándar de Windows Server 2016, la instalación principal Server Core o en la opción de instalación Nano Server, la cual está específicamente diseñada para correr aplicaciones dentro de contenedores o máquinas virtuales.

Adicionalmente a Linux y Windows, Docker también corre sobre plataformas populares de nube como Amazon EC2, Google Compute Engine, Microsoft Azure y Rackspace.

¿Eventualmente los contenedores sustituirán a los servidores completos de virtualización?: Eso es poco probable en un futuro previsible por un número de razones importantes.

En primer lugar, todavía hay una opinión generalizada de que las máquinas virtuales ofrecen una mejor seguridad que los contenedores debido al aumento del nivel de aislamiento que proporcionan.

Quizás lo más importante es que la virtualización y los contenedores también están llegando a ser vistos como tecnologías complementarias en lugar de competidores. Eso es porque los contenedores se pueden ejecutar en máquinas virtuales ligeras para aumentar el aislamiento y -por lo tanto- la seguridad. También se debe a que la virtualización de hardware hace que sea más fácil de administrar la infraestructura de hardware (redes, servidores y almacenamiento) que se necesita para dar soporte a los contenedores.

VMware recomienda a los clientes que han invertido en su infraestructura de gestión de máquina virtual que ejecuten contenedores en su distribución de Linux para containers Photon OS dentro de máquinas virtuales ligeras que luego pueden ser administradas desde vCenter. Esto es la estrategia de VMware “contenedor en una VM”.

Pero VMware también ha introducido lo que llama vSphere Integrated Containers (VIC). Estos contenedores se pueden desplegar directamente a un host standalone ESXi o hacia un vCenter Server como si fueran máquinas virtuales. Esto es la estrategia de VMware “contenedor como VM”.

Ambos enfoques tienen sus ventajas, pero lo importante es que, en lugar de sustituir las máquinas virtuales, a menudo pueden ser útiles para poder utilizar los contenedores dentro de una infraestructura virtualizada.

Paul Rubens, CIO.com

Ordenado por: Aplicaciones Tags: ,

Contenidos recomendados...

Comparta esta publicación

Artículos relacionados

Escriba su comentario

Ud. tiene que estar conectado para publicar comentarios.

Red de publicaciones IDG en Latinoamérica: Computerworld Ecuador - Computerworld Colombia - CIO Perú // Contáctenos
© 0272 Computerworld Venezuela - All rights reserved ---- WordPress - Tema adaptado por GiorgioB