You are on page 1of 4

Cmo crear mltiples

contenedores con Docker


7
inCompartir

Joel Humberto Gomez Paredabril 29 2015


Cuando empiezas a usar Docker y mientras entiendes su funcionamiento, sueles

crear un contenedor con todos los servicios que vas a utilizar, esto es el

equivalente a tener todo tu cdigo en un solo archivo (todos lo hicimos alguna

vez).

No puedo decir que esta sea una buena o una mala prctica, pues muchas de las

cosas que hacemos dependen de la infraestructura y del contexto en que se

ejecute la aplicacin.

No obstante, lo ms recomendable es tener un contenedor por servicio,

supongamos que queremos tener una aplicacin como Twitter (no recuerdo si usa

todo esto exactamente pero sirve para ejemplificar), para lograrlo necesitaramos:

Un contenedor para la aplicacin de Scala


Un contenedor para Cassandra
Un contenedor para Redis

Una vez que los creamos podemos ligarlos o usar Docker Composer y listo, ya

tenemos nuestros contenedores unidos.


Nuestra plataforma est lista para poder recibir millones de usuarios? La

respuesta es un rotundo No, un solo servidor no da para eso y menos una

sola instancia de la plataforma.

En la mayora de los casos las plataformas/aplicaciones siempre estn

disponibles, aunque se est haciendo una actualizacin, as que debe tenerse

ms de una instancia del contenedor corriendo y tener un load balancer que se

ocupe de re-dirigir el trfico HTTP entre las distintas instancias que se estn

ejecutando.

Pero la pregunta del milln, como hago eso?

Crear mltiples instancias de un contenedor es fcil si usamos el comando docker

run, y hacer el balanceo de cargas tambin gracias a HAProxy.

HAProxy es una herramienta que acta como intermediario entre las

peticiones de los usuarios y los mltiples servidores que estn a la espera

de contestar, esto con la finalidad distribuir la carga entre servidores para que no

se saturen, lo que da como resultado una plataforma con alta disponibilidad.

Este tipo de infraestructuras son utilizadas por empresas grandes como Google y

Facebook, quines tienen la tarea de recibir millones o quizs miles de millones de

peticiones por segundo, de hecho si haces un ping a Google y esperas por un

tiempo antes de volver a hacerlo, es posible que no te conteste el mismo servidor,

lo cual indica que hay alguien que nos dice a dnde ir.
Hacer este tipo de configuraciones requiere tiempo y conocimiento (saber lo que

ests haciendo), pero si quieres algo rpido para experimentar, te recomiendo el

uso de una imagen de docker creada por Tutum, que implementa HAProxy en un

contenedor y nos proporciona un tutorial muy sencillo de cmo implementar su

contenedor para hacer el balanceo de cargas.

En la documentacin nos encontramos con un ejemplo de cmo crear dos

instancias de un contenedor para que se pueda acceder a ellas a travs del puerto

80.
docker run -d --name web1 tutum/hello-world
docker run -d --name web2 tutum/hello-world

En donde web1 y web2 son los nombres de los contenedores, y tutum/hello-

world es la imagen que se bajar del Registry de Docker o una imagen local,

si as lo deseas.

Al final solo tenemos que hacer un enlace entre los contenedores hacia el

contenedor con HAProxy.

docker run -d -p 80:80 --link web1:web1 --link web2:web2 tutum/haproxy

Listo, ya tenemos un contenedor que hace el balanceo de cargas a dos

contenedores.

En conclusin, hay herramientas que pueden hacer el despliegue de una

plataforma robusta con solo un click, existen otras herramientas que usan Docker

y te facilitan el proceso de construccin o administracin de la misma.

Al final esto debe ser transparente para el usuario, nuestra tarea es tener una

plataforma slida y escalable para entregar el mejor servicio posible. El desarrollo

de plataformas como el desarrollo de aplicaciones est tomando un nuevo

rumbo, muy parecido a las buenas prcticas de programacin: crear

clases/contenedores con tareas especficas, y comunicar a los

objetos/componentes mediante mensajes, manteniendo a las partes aisladas en

funcionamiento y entorno, pero colaborando para crear un todo.

You might also like