The Container Revolution

Wake up Neo… Containers have you…

El pasado 6 de octubre se celebró en Madrid el Microsoft Tech Summit. En esta edición participé con Iria dando una sesión sobre contenedores en el track 8 del evento. Si no la visteis, os dejo los detalles para verla on demand.
 

La contenerización ha llegado para quedarse con nosotros. La aparición de Docker y su simplificación del uso de la tecnología de contenedores ha facilitado la explosión que hemos vivido en este espacio en los últimos años. Ejecutar nuestros contenedores es tan sencillo como lanzar docker run en la línea de comandos tanto en Linux como en Windows. Sin embargo, a veces no solo nos vale conocer el cómo se usa sino que nos interesa conocer un poco mejor lo que hay por debajo.
 
En esta sesión veremos qué son los contenedores, de dónde vienen, detalles sobre cómo se implementan en Linux, y cómo se ha realizado la integración con Windows Server.
 
¿Con qué te quedas: pastilla roja o pastilla azul?

Docker for Windows, una vista rápida del panorama actual

El pásado día 5 de mayo tuvo lugar en nuestras oficinas una nueva edición del Meetup de Docker Madrid. Gracias al equipo de DX de Microsoft España ya tenemos las sesiones disponibles en Channel 9.

En primer lugar, contamos con la participación de Ignacio Sánchez y Ramón Román de atSistemas donde me quedo sin duda con su clúster de Raspberry Pi integrado con los nuevos pipelines de Jenkins 2.0. Media hora de sesión donde ver cómo emplear Docker Swarm para la gestión de clústeres basados en Docker y la instanciación de aplicaciones basadas en microservicios. Muy útil las nuevas capacidades incorporadas en Swarm para reinstanciar los contenedores en otro nodo si el host se cae.

Tras ellos, por mi parte hice una breve introducción a cómo se encuentra el ecosistema de Docker en entornos basados en Windows. Desde los avances en Docker for Windows con Kitematic para permitirte trabajar con Docker directamente en Windows 10 con Hyper-V de forma sencilla, hasta los cambios que están llegando en la parte de Windows Server con la implementación a nivel del núcleo del soporte a contenedores.

Tenéis disponible el vídeo y la presentación

Creando una distribución de Linux desde cero como imagen base de Docker

A principios del pasado mes de diciembre tuve una sesión en Tajamar hablando sobre contenedores, Docker y la plataforma de Microsoft. Tuvimos una muy buena conversación sobre el tema y una de las preguntas que hizo @alber86 me dio que pensar. Su duda iba enfocada a cómo un contenedor de Docker puede ejecutar un “sistema operativo” en él, cómo se construye y cuáles son las diferencias respecto a la ejecución del mismo dentro de una máquina virtual.

A partir de ahí el reto estaba claro, entender cómo se puede generar una distribución de Linux desde cero y una vez construida, comprender cómo ejecutar mis propios contenedores de Docker basados en esa distribución como imagen base. El artículo es un breve resumen del proceso por si estás interesado en replicarlo.

Continue reading Creando una distribución de Linux desde cero como imagen base de Docker

Cómo preparar una máquina virtual para trabajar con Docker en Azure

Las máquinas virtuales a la hora de probar cosas nuevas son muy prácticas, más si están desplegadas directamente en la nube. Gracias a ello tu equipo se mantiene limpio y no se ocupa espacio ni recursos. Preparando una sesión de introducción a los contenedores y en especial a Docker he estado preparando el entorno para hacer todas las demos en Azure. La idea es tener todas las herramientas relacionadas con Docker y su integración con Azure en un mismo lugar permitiendo de esta manera facilitar el trabajo.

La idea es instalar la versión experimental de Docker y así disfrutar de las últimas novedades de la DockerCon. Junto con ello, disponer de Machine, Compose, Swarm y también de las herramientas de línea de comandos de Azure para linux. Un pack básico para sacar todo el provecho de Docker en Azure. ¡Empecemos!

Continue reading Cómo preparar una máquina virtual para trabajar con Docker en Azure

Instalando el cliente de Docker 1.6 en Windows con OneGet

En noviembre del año pasado se anunciaba el primer pull request del cliente de Docker para Windows. Para probar su funcionamiento había que realizar una compilación directa del código fuente disponible en el repositorio de Github. Sin embargo, en el anuncio realizado esta semana de la disponibilidad de la versión 1.6 de Docker venía una sorpresa: el cliente para Windows.

Para la instalación vamos a tener dos alternativas, realizarlo directamente desde el ejecutable disponible que nos permitirá tener una instalación similar a la que los usuarios de Mac venían disfrutando: Docker 1.6 + Boot2Docker + VirtualBox + msysGit. La propia página de documentación de Docker incluye una guía detallada de cómo hacerlo. O la segunda, la que vamos a ver hoy, instalar únicamente el cliente de Docker a través del paquete de Chocolatey disponible.

Continue reading Instalando el cliente de Docker 1.6 en Windows con OneGet

Una vuelta de tuerca a los contenedores de la mano de Microsoft

Las tecnologías de contenerización suponen una gran disrupción en la forma que estamos acostumbrados a trabajar tanto en el mundo del desarrollo como de la infraestructura.

Los grandes actores del panorama tecnológico están tomando posiciones; lo hemos podido ver la semana pasada con Google Ventures invirtiendo doce millones de dólares en CoreOS, una distribución minimalista de Linux enfocada a la ejecución de aplicaciones contenerizadas en los grandes datacenters. También con Microsoft y su acuerdo de colaboración con Docker, uno de los principales jugadores en el mundo actual de contenedores con más de 100 millones de contenedores de Docker descargados y más de 70.000 aplicaciones dockerizadas. Tenemos también a Red Hat colaborando activamente con Project Atomic para crear un standar de contenerización en el mundo open source o VMware facilitando la integración de sus herramientas y plataforma con estas nuevas tecnologías.

Sin embargo, de todos ellos, creo que Microsoft es el que se puede encontrar en una posición más ventajosa a día de hoy. Comparado con los anteriores, es el único que tiene su propio sistema operativo de servidor, Windows Server;  su propia plataforma de virtualización, Hyper-V; y su propia solución de cloud computing, Microsoft Azure.

Este ecosistema permite por ejemplo que todo lo que aprende desplegando y gestionando un servicio de cloud con cientos de miles de servidores pueda reinvertilo en mejorar y construir productos adecuados a las necesidades de sus usuarios. Mientras tanto, el resto de jugadores tienen que buscar en terceros esas “patas” de conocimiento que les faltan.

Gracias a lo anterior, es aquí donde pienso que una vez más Microsoft ha dado una vuelta de tuerca a una tecnología, en este caso: los contenedores.

Continue reading Una vuelta de tuerca a los contenedores de la mano de Microsoft

Filtros y estrategias de planificación de un cluster con Swarm

Swarm tiene disponible a día de hoy dos estrategias para desplegar los contenedores entre los nodos de Docker del cluster: BinPacking y Random. Por defecto, Swarm utiliza la primera; la segunda únicamente escoge un nodo al azar y está pensada para tareas de depuración según indica la documentación.

En este artículo cubriremos los detalles del planificador y los filtros que se le pueden aplicar para desplegar nuestros contenedores.

Continue reading Filtros y estrategias de planificación de un cluster con Swarm

Mecanismos de descubrimiento de nodos con Swarm

En el artículo anterior sobre Swarm cubrimos uno de los mecanismos de descubrimiento de nodos que tiene. Sin embargo, la plataforma a día de hoy soporta otros gracias a un modelo extensible basado en plugins:

  • Servicio de descubrimiento alojado en Docker Hub (Hosted Discovery Service): el mecanismo utilizado en el artículo anterior.
  • Fichero de descripción del cluster.
  • Listado estático de IPs.
  • Etcd: un almacenamiento basado en claves de caracter distribuido y consistente para el descubrimiento de servicios y entornos de configuración compartida.
  • Consul: una herramienta para facilitar el descubrimiento y la configuración de servicios en tu infraestructura.
  • Apache Zookeper: un servidor open-source enfocado a la coordinación de sistemas distribuidos de forma altamente fiable.

En este artículo veremos cómo funciona dicho método de descubrimiento y cómo podemos hacer el descubrimiento de los nodos a través de otros dos métodos: un fichero de descripción del cluster y un listado de direcciones IP.

Continue reading Mecanismos de descubrimiento de nodos con Swarm

Desplegando un cluster de Docker con Swarm en Azure

En las últimas entradas en las que hablaba sobre Docker, todo el rato trabajaba contra un único servidor donde estaba alojado el motor. A la hora de realizar pruebas puede ser suficiente; sin embargo, a la hora de desplegar entornos más complejos, con alta disponibilidad y otras características de nivel empresarial, es necesario disponer de más herramientas.

El equipo de Docker está trabajando en ello con Machine, Compose y Swarm. La primera de ellas ya la cubrí en un artículo anterior, la segunda vendrá en uno futuro y la tercera es la que explicaré en este artículo.

Swarm es la solución nativa de clusterización para contenedores de Docker. Permite unificar diferentes motores como un único host virtual y desplegar en él tus soluciones. Lo mejor es que se puede gestionar desde otras herramientas de forma transparente como el propio cliente de Docker, Compose, Jenkins, etc

Vamos a ver cómo podemos montar un cluster de Docker y gestionarlo con Swarm desde cero en Azure. En lugar de utilizar las extensiones disponibles en Azure para máquinas virtuales, veremos cómo crearlo paso por paso a mano.

Continue reading Desplegando un cluster de Docker con Swarm en Azure

Desplegando nuestros hosts de Docker a Azure con Machine

A la hora de desplegar nuestro host o motor de Docker en Azure, ya estuve hablando sobre cómo se podía hacer utilizando la extensión disponible para máquinas virtuales o desde cero dentro de nuestra propia máquina virtual.

Sin embargo, estos mecanismos no proporcionan una solución rápida o fácilmente automatizable en entornos que así lo requieran. Por ello, desde Docker no están haciendo evolucionar la plataforma únicamente en el área de su motor y cliente, sino que también hay una serie de proyectos satélites que buscan completarla proporcionando las herramientas de orquestación y automatización necesarias.

A finales de febrero, liberaron la primera versión beta de tres de ellas: Swarm, Compose y Machine.

  • Machine: el objetivo de esta herramienta es facilitar el despliegue del motor de Docker a través de un solo comando en tu ordenador, en tu propio datacenter o en un proveedor de cloud como Azure.
  • Compose: facilita el despliegue de aplicaciones distribuidas construidas sobre una solución basada en múltiples contenedores.
  • Swarm: es la solución de clusterización para contenedores de Docker. Permite unificar diferentes motores de Docker como un único host virtual y desplegar en él tus soluciones. Lo mejor es que se puede gestionar desde otras herramientas de forma transparente como el propio cliente de Docker, Compose, Jenkins, etc.

El artículo de hoy está enfocado a mostrar cómo hacer uso de Machine para desplegar nuestras hosts en Azure.
Continue reading Desplegando nuestros hosts de Docker a Azure con Machine