Header Ads Widget

Ticker

6/recent/ticker-posts

Herramientas creadas sobre la API de Docker

 

Herramientas integradas en la parte superior de la API de Docker

Docker es una nueva tecnología popular que permite a los equipos de desarrollo agrupar aplicaciones en contenedores virtuales para construirlas e implementarlas fácilmente. Anteriormente hemos visto cómo Docker reduce la complejidad de los flujos de trabajo de DevOps y fomenta la práctica de la infraestructura inmutable, donde toda la aplicación, junto con su sistema operativo subyacente, se recrea y se vuelve a implementar como un contenedor ligero para cada cambio en una aplicación, en lugar de confiando en actualizaciones incrementales.

Dada la notable historia de éxito de Docker durante los últimos tres años y la disponibilidad de su API remota, era inevitable que Docker se convirtiera también en una plataforma popular, en la que los desarrolladores habían construido todo tipo de software.

De acuerdo con la propia filosofía de Docker, los desarrolladores externos en este nuevo ecosistema han contribuido con muchos proyectos de código abierto. En este artículo, revisamos estos proyectos para ver cómo están usando la API de Docker.

Dogfooding

El principal usuario de la API de Docker es el propio Docker: alojan una serie de herramientas para combinar y orquestar contenedores de Docker en configuraciones útiles. Docker Compose facilita la implementación de aplicaciones de contenedores múltiples, mientras que Docker Swarm permite la creación de clústeres de contenedores Docker.

Si bien Docker está activo en esta área, agradecen la contribución de otros actores en la orquestación de los contenedores de Docker. La orquestación es un término amplio, pero podemos dividirlo en programación , agrupación en clústeres , descubrimiento de servicios y otras tareas.

Por lo general, no es deseable tener varios procesos ejecutándose dentro del mismo contenedor Docker, por razones de eficiencia, transparencia y para evitar un acoplamiento estrecho de dependencias. Es mucho más práctico que cada contenedor quede limitado a una única responsabilidad y ofrezca un servicio claramente definido al resto de la infraestructura. Por lo tanto, una aplicación completa generalmente implica una colección de contenedores Docker. Esto introduce una complejidad para la que abundan las nuevas soluciones.

Planificación

La programación de contenedores Docker también es un aspecto importante de la orquestación de contenedores. En este contexto, la programación se refiere a las reglas por las que se ejecutan los contenedores en un host determinado. Por ejemplo, una política de programación puede implicar que dos contenedores tengan que ejecutarse en el mismo host cuando sus funcionalidades son sinérgicas. Gracias a esta política, los dos contenedores se pueden abstraer como una sola aplicación al definir el comportamiento del clúster.

Además de las funciones de programación de Docker Swarm, Fleet de CoreOS y Marathon son ejemplos de programadores de Docker de código abierto.

Lea también DevOps basado en API: Spotlight on Docker para un análisis más profundo de la arquitectura de contenedores

Gestión de clústeres

La agrupación en clústeres implica la gestión de colecciones de hosts Docker en un todo cohesivo para que puedan funcionar juntos como un solo sistema.

Existen alternativas de código abierto para Docker Swarm, como Kubernetes de Google, que permite a los equipos definir 'pods' de contenedores Docker. Otros incluyen Shipyard , Fleet by CoreOs y Marathon .

Empresas como Spotify han desarrollado y abierto su propio sistema de gestión de contenedores Docker, tal es la necesidad de un sistema basado en Docker bien adaptado para cada caso de uso.

Descubrimiento de servicios

El descubrimiento de servicios se refiere al descubrimiento de las direcciones IP relacionadas con un servicio en una red, que puede ser un proceso complicado en un entorno agrupado de varios hosts.

Varias empresas como GliderLabs han aprovechado la API remota de Docker para escuchar eventos y crear utilidades en torno al software basado en contenedores. Registrator , un proyecto de código abierto respaldado por Weave, ayuda a mejorar el descubrimiento de servicios al inspeccionar los contenedores Docker recién creados y registrar los nuevos servicios en un directorio como Consul .

Redes

Para conectar los contenedores de Docker que forman una aplicación, Docker tiene algunas funciones de red . Una red de puente virtual predeterminada está habilitada de manera predeterminada, pero hay una variedad de configuraciones. Los proveedores han ofrecido configuraciones de red alternativas para diferentes casos de uso.

Weave crea una red virtual de microenrutadores para conectar contenedores a través de múltiples hosts. Esto conduce a una configuración de red más simple, adición dinámica de nodos a la red y comunicaciones encriptadas. Weave ofrece servicios adicionales como el producto de monitoreo de redes Weave Scope.

Flannel , una solución de red virtual de código abierto de CoreOS, crea una red superpuesta utilizando un clúster Etcd para almacenar la configuración de la red.

Project Calico es otra solución de red de código abierto para contenedores Docker, basada en un enfoque puro de 'Capa 3', lo que significa que no es una red superpuesta: no se produce ningún encapsulado de paquetes por encima de la tercera capa del modelo OSI . Esto tiene la ventaja de aumentar el rendimiento en comparación con las otras soluciones.

Almacenamiento

Un problema que tienen los aficionados a la infraestructura inmutable , que Docker media, son las bases de datos. Los datos en las bases de datos son mutables por definición, por lo que un contenedor con una base de datos no puede simplemente recrearse desde cero y volver a implementarse sin comprometer la integridad de la base de datos.

También existen soluciones nativas de Docker para este problema en forma de volúmenes de datos y contenedores de volúmenes de datos . Los volúmenes de datos son persistentes y sobreviven a la eliminación de los contenedores a los que están conectados, y los datos que contienen permanecen inviolados durante todo el ciclo de vida de Docker. Se puede utilizar un contenedor de volumen de datos cuando se comparten datos entre varios contenedores.

Los volúmenes de datos se pueden respaldar y restaurar; productos como Flocker de ClusterHQ, un administrador de volumen de datos de código abierto, administra volúmenes de datos y contenedores, y realiza la migración de datos para admitir bases de datos de producción basadas en contenedores.

Integración continua

Existen muchas herramientas en el área de integración continua (CI) para manejar mejor los contenedores Docker en el ciclo de compilación, prueba e implementación. Por ejemplo, CodeFresh se puede utilizar para desencadenar la creación y la implementación de contenedores Docker al detectar cambios en un repositorio Git o una nueva compilación desde el servidor de integración continua.

Jet de CodeShip es una nueva plataforma de CI para Docker. Puede extraer imágenes de cualquier registro de Docker e integrarse con Docker Compose para realizar fácilmente la compilación y el despliegue simultáneos de aplicaciones basadas en contenedores.

Drone es otra plataforma de entrega continua construida sobre Docker, que utiliza un contenedor efímero durante el proceso de construcción.

Lea nuestra publicación completa sobre herramientas de integración continua para estimular el desarrollo de API

Registros de Docker alojados

Además del propio DockerHub, varias empresas ofrecen registros de Docker alojados , como Quay.io , Artifactory y Container Registry de Google . Estos servicios sirven como repositorios privados para contenedores y ofrecen funciones de repositorio avanzadas, integraciones de terceros y una experiencia de usuario limpia para los ingenieros de DevOps.

Agregación de registros

Logspout es otro proyecto de código abierto de GliderLabs. Cuando varios contenedores Docker comparten un solo servidor host, Logspout realiza el enrutamiento y la agregación de registros en un sistema de administración de registros como PaperTrail . Además, Filebeat registra los registros de un contenedor y los envía a Logstash.

Supervisión

Hay disponibles una gran cantidad de soluciones de monitoreo de terceros para aplicaciones basadas en Docker, creadas por algunos de los nombres más importantes en el espacio de monitoreo en la nube. Aprovechando la API de estadísticas de Docker, muestran los datos resultantes en paneles elaborados.

Ejemplos de estas soluciones de monitoreo incluyen:

  • Una extensión de Docker de AppDynamics ,
  • un agente DataDog habilitado para Docker ,
  • trato ciudadano de primera clase a los contenedores Docker en New Relic ,
  • el agente Docker de Scout , distribuido a su vez como una imagen de Docker.

Gestión de la configuración

Docker le permite agregar metadatos personalizados a imágenes, contenedores y procesos (demonios) a través de etiquetas . Las etiquetas son pares clave-valor que se utilizan para especificar una configuración personalizada, como el control de versiones y los detalles del entorno.

Para evitar colisiones de nombres, Docker fomenta el uso de espacios de nombres en estas etiquetas, pero no las impone. Docker Label Inspector es una utilidad de Gareth Rushgrove , un ingeniero senior de Puppet Labs , que verifica las imágenes de Docker publicadas con estas pautas o un esquema JSON determinado.

Auditoría de seguridad

Como algunos han planteado preguntas sobre la seguridad inherente de las aplicaciones basadas en contenedores, y aunque el propio Docker ha tapado muchos de los agujeros a lo largo de los años, los proveedores han ofrecido soluciones para asegurar aún más las aplicaciones de Docker. Un ejemplo es Scalock , una empresa que ha desarrollado software para escanear contenedores en busca de problemas de seguridad, controlar el acceso a contenedores y monitorear contenedores en tiempo de ejecución para asegurarse de que no sobrepasen su perfil de autorización.

PaaS

Podría decirse que la multitud de software nuevo basado en Docker ha generado nuevas dificultades para componer estas herramientas juntas , pero este es un síntoma de un ecosistema en proceso de maduración. Un puñado de empresas han hecho la ambiciosa apuesta de crear una solución de extremo a extremo similar a PaaS para construir, implementar, orquestar y monitorear aplicaciones basadas en Docker, ocultando así toda esta complejidad.

Openshift es la solución PaaS de RedHat construida sobre Docker y Kubernetes. Deis es una solución PaaS inspirada en Heroku basada en Dockerand CoreOS de Engine Yard . Paz es un proyecto de código abierto basado en Docker, CoreOS, Etcd y Fleet que permite a los equipos alojar su propio flujo de trabajo similar a PaaS para aplicaciones de contenedores.

Por último, Docker adquirió recientemente Tutum, una suite similar a PaaS para implementar y administrar contenedores de Docker, renombrándola como Docker Cloud .

SO en toda regla

Tal es la popularidad de Docker que algunas personas se han aventurado a crear sistemas operativos completos hechos de contenedores Docker.

Rancher's RancherOS es un sistema operativo ligero hecho exclusivamente con contenedores Docker. Es una distribución de Linux de 20 MB diseñada para ejecutar aplicaciones basadas en contenedores.

HypriotOS es un campo de juego de Docker para Raspberry Pi . Le permite implementar aplicaciones de contenedor en estas pequeñas computadoras y consiste en una imagen liviana que puede caber en una tarjeta SD.

Conclusión

La aparición de Docker ha dado lugar a un nuevo ecosistema de software DevOps. Es probable que siga creciendo en el futuro a medida que aumente la proporción de aplicaciones basadas en contenedores (a diferencia de las basadas en VM ).

En los próximos artículos, veremos otros componentes del espacio DevOps, a saber, Integración continua y Gestión de la configuración, así que síganos y suscríbase a nuestro boletín para mantenerse actualizado.

Publicar un comentario

0 Comentarios