Contenido


Primeros pasos con Docker y PureApplication

Comments

Docker es una solución innovadora que permite ejecutar cualquier tipo de aplicaciones sobre una gran variedad de plataformas gracias a su tecnología basada en contenedores. Estos contenedores permiten empaquetar una aplicación y todas sus dependencias en una sola entidad, garantizando de esta manera una amplia y fácil portabilidad en el momento de desplegarla en un nuevo entorno.

PureApplication es una solución de nube híbrida que se declina en tres versiones:

  • PureApplication System (appliance operando en un centro de datos)
  • PureApplication Service (sobre la nube de SoftLayer)
  • PureApplication Software (implementación sobre la infraestructura del cliente)

PureApplication permite entre otras cosas acelerar drásticamente el despliegue de las aplicaciones gracias a un concepto de patrones que permite encapsular la arquitectura de dicha aplicación.

En este artículo, vamos a mostrar como aprovechar ambas tecnologías, Docker y PureApplication, en conjunto. A través de los siguientes pasos, enseñaremos como desplegar una aplicación basada en contenedores de Docker sobre la plataforma PureApplication:

  • Despliegue de un registro privado de imágenes de Docker en PureApplication
  • Configuración de un cliente externo de Docker para descargar imágenes y exportarles hacia el registro privado desplegado en PureApplication
  • Creación de un patrón en PureApplication basado en contenedores Docker usando las imágenes de WordPress y MySql
  • Despliegue del patrón en PureApplication
  • Operación sobre la instancia del patrón desplegado a través de la consola de PureApplication

Pre-requisitos

Los pre-requisitos para realizar estos pasos son:

  1. Un acceso a un PureApplication System/Service/Software (versión mínima 2.1.0, compatible con Docker) para soportar el repositorio privado de Docker. En este artículo, se usó PureApplication Service v2.1.2.0.
  2. Una estación de trabajo con Linux 6 (64 bits) actuando como cliente del repositorio privado de Docker. Se utilizó una imagen de tipo Ubuntu 15.10 (Wily Werewolf) desplegada sobre Oracle VirtualBox 5.0.16.

Despliegue del Registro Privado de Docker en PureApplication

El primer paso consiste en desplegar un registro privado de Docker dentro de PureApplication. De tal manera, podremos construir patrones incorporando las imágenes de Docker contenidas en este registro.

Existe en el catálogo de PureApplication un patrón pre-definido para desplegar tal registro, se llama Docker Private Registry. Para desplegarlo, dentro de la consola de PureApplication, vamos a la sección Patterns > Virtual System Patterns y buscamos el patrón con el filtro de búsqueda:

Illustration 1: Patrón pre-definido para el Docker Private Registry

Una vez ubicado el patrón, lo seleccionamos y damos click en el icono Deploy:

Illustration 2: Despliegue del Docker Private Registry

De ahí, se abre una nueva ventana para configurar las opciones para el despliegue del patrón. En esta ventana, configuramos las contraseñas al nivel del sistema operativo:

Illustration 3: Configuración del despliegue del Docker Private Registry

Una vez que todos los parámetros estén llenos, damos click al icono Quick Deploy. Después de unos minutos, la instancia del Docker Private Registry queda desplegada. Esta se puede visualizar en la sección Patterns > Virtual System Instances, buscando la instancia en el filtro de búsqueda:

Illustration 4: Instancia del Docker Private Registry

En esta misma pantalla, anotamos la dirección IP de la máquina virtual del Docker Private Registry (referenciada aquí como <DOCKER_REGISTRY_IP>), colocada en la sección Virtual machine perspective:

Illustration 5: Dirección IP del Docker Private Registry

En la sección Catalog > Docker Registry, ingresamos la dirección IP <DOCKER_REGISTRY_IP> en el campo Registry URL y luego damos click a los íconos Save y Test Connection para comprobar que la conexión se establece correctamente hacia el Docker Private Registry (mensaje “Connected to Docker Registry”):

Illustration 6: Configuración del Docker Registry dentro de PureApplication

De esta manera, desde la consola de PureApplication, podemos hacer referencia al Docker Private Registry y usar las imágenes que contiene a la hora de crear unos patrones (es posible configurar una conexión SSH al Docker Private Registry, pero en nuestro caso nos conectamos de manera insegura).

Cliente Docker

El registro Docker Private Registy desplegado no tiene por defecto conexión hacia el Docker Hub. Por eso, necesitamos configurar un Docker Client externo al PureApplication que tendrá acceso al Docker Hub para descargar imágenes y al mismo tiempo tendrá conectividad al PureApplication para poder transferir estas imágenes hacia el Docker Private Registry.

En nuestro caso, se creo una máquina virtual por medio del software Oracle VirtualBox con el sistema operativo Ubuntu 15.10 para actuar como Docker Client. Esta máquina virtual necesita tener conectividad con el PureApplication donde está desplegado el Docker Private Registry. Los pasos para instalar Docker sobre Ubuntu están descritos en el sitio web de Docker.

Cuando la instalación de Docker ha concluído, podemos comprobar que Docker funciona correctamente descargando la imagen de prueba hello-world y ejecutándola en un contenedor con el siguiente mando:

docker run hello-world

Illustration 7: Validación de la instalación del cliente Docker

Una vez que hemos comprobado que Docker esté instalado correctamente, se requiere configurar una conexión hacia el Docker Private Registry desplegado en el PureApplication. Nosotros mostramos como configurar una conexión insegura hacia el registro.

Para eso, editamos el archivo /etc/default/docker, añadiendo la siguiente línea con la dirección IP del Docker Private Registry:

DOCKER_OPTS="--insecure-registry <DOCKER_REGISTRY_IP>"

Después, creamos el archivo /etc/systemd/system/docker.service.d/ubuntu.conf con el siguiente contenido:

[Service]
EnvironmentFile=/etc/default/docker
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_OPTS

Se recomienda reiniciar la máquina virtual del Docker Client después de estos pasos. Luego, tenemos que reiniciar los servicios del sistema operativo, así como el servicio de Docker y comprobar su estado de la siguiente manera:

systemctl daemon-reload
systemctl restart docker
systemctl status docker

Illustration 8: Configuración del cliente Docker para acceder al Docker Private Registry

A partir de este punto, hemos establecido una conexión con el Docker Private Registry desplegado dentro del PureApplication. El próximo paso consiste en descargar algunas imágenes de Docker desde el Docker Client y transferirles hacia el Docker Private Registry para poder usarles dentro del PureApplication.

Descarga de las imágenes Docker

En esta sección, descargaremos algunas imágenes Docker desde el Docker Client y las copiaremos hacia el Docker Private Registry para que estas imágenes estén disponibles en PureApplication.

Se utilizarán las siguientes imágenes Docker:

  1. WordPress
  2. MySql

Para descargar estas imágenes desde el Docker Hub, procedemos de la siguiente manera:

docker pull wordpress

Illustration 9: Descarga de la imagen de WordPress

Una vez que la imagen este descargada, asociamos un tag sobre la imagen con un identificador para indicar que pertenecerá al repositorio de PureApplication:

docker tag wordpress:latest <DOCKER_REGISTRY_IP>:5000/pure/wordpress

Illustration 10: Asociación de un tag a la imagen de WordPress

Finalmente, podemos exportar la imagen al Docker Private Registry ubicado en el PureApplication de la siguiente manera:

docker push <DOCKER_REGISTRY_IP>:5000/pure/wordpress

Illustration 11: Exportación de la imagen de WordPress hacia el Docker Private Registry

De la misma manera, hacemos las mismas operaciones (pull, tag y push) para la imagen de MySql.

Creación de un patrón con contenedores Docker

Una vez que hemos cargado las imágenes de WordPress y MySql en el Docker Private Registry, podremos construir un patrón basado en estas imágenes desde la consola de PureApplication.

Para eso, vamos a la sección Patterns > Virtual System Patterns y damos click al ícono Create New para crear un nuevo patrón:

Illustration 12: Creación de un nuevo patrón

Se abre una nueva ventana en la cual proporcionamos un nombre para el patrón que crearemos y especificamos que empezaremos desde cero, sin usar ningún template específico. Luego damos click al icono Start Building:

Illustration 13: Selección de un template para el nuevo patrón

Se abre la ventana del Pattern Builder, que nos permitirá diseñar nuestro patrón. En la sección Software Components, arrastramos un componente de tipo Docker Container y lo colocamos en la parte central de la pantalla:

Illustration 14: Selección de un contenedor de tipo Docker

De ahí, en la sección de la derecha, podremos configurar las propiedades de este componente, tales como su nombre, las contraseñas de usuarios al nivel del sistema operativo, así como el nombre de la imagen Docker que se utilizará. Observamos que se enlistan las imágenes que hemos cargado en el Docker Private Registry, es decir WordPress y MySql. Configuraremos primero el componente de WordPress, por lo tanto, seleccionamos la imagen pure/wordpress:latest:

Illustration 15: Configuración de la maquina virtual del contenedor de tipo Docker

Notamos que al seleccionar la imagen de WordPress, los parámetros de configuración de la imagen aparecen a continuación:

Illustration 16: Configuración de las variables de la imagen de WordPress

Para este artículo, no es necesario cambiar estos parámetros. Procederemos ahora con la configuración del componente de MySql. De la misma manera, arrastramos un componente de tipo Docker Container y configuramos sus propiedades, seleccionando esta vez la imagen pure/mysql:latest:

Illustration 17: Configuración del contenedor de tipo Docker para la imagen de MySQL

Al igual que para la imagen de WordPress, se rellenan automáticamente algunos parámetros de configuración de la imagen de MySql. Sin embargo, esta vez añadiremos el siguiente par de parámetros:

Variable  Valor
MYSQL_ROOT_PASSWORD  ********
MYSQL_DATABASE  wordpress

Dejamos los demás parámetros con sus valores por defecto:

Illustration 18: Configuración de las variables de la imagen de MySQL

La última etapa de la creación de este patrón consiste en interconectar el componente de WordPress con el componente de MySql para garantizar su integración al momento de desplegar el patrón. Para eso, seleccionamos la caja del componente de WordPress y arrastramos el punto azul hacia el componente de MySql:

Illustration 19: Creación del enlace entre ambos contenedores de tipo Docker

Aparece una ventana para configurar la conexión entre ambos componentes. Vamos a especificar el valor mysql para el nombre de esta conexión:

Illustration 20: Configuración del enlace

Por último, damos click al icono Save para guardar el patrón:

Illustration 21: Finalización del patrón

El mensaje “The pattern is saved” nos confirma que la configuración del patrón ha sido guardada.

Despliegue del patrón

Ahora que hemos construído nuestro patrón, vamos a desplegarlo dentro de PureApplication. Para eso, en la sección Patterns > Virtual System Patterns buscamos el patrón con el filtro de búsqueda y damos click al icono Deploy (en forma de nube):

Illustration 22: Despliegue del patrón

Se abre la ventana de despliegue del patrón. De ahí, tenemos una última oportunidad para cambiar los parámetros del patrón (en este caso, los cambios solo aplicarán sobre la instancia desplegada). Dado que ya hemos completado la configuración del patrón, podemos dar click directamente al icono Quick Deploy:

Illustration 23: Configuración del despliegue del patrón

Aparece entonces un mensaje confirmando el inicio del despliegue. Damos click sobre el enlace clicking here:

Illustration 24: Enlace hacia la instancia desplegada

Se muestra una nueva página donde se puede visualizar el progreso del despliegue de la instancia. Después de unos minutos, el estado de la instancia cambia a running, lo que significa que finalizó el despliegue de la misma:

Illustration 25: Estado de la instancia desplegada

En la sección Virtual machine perspective, podemos ver que se crearon 2 máquinas virtuales, una para el servidor WordPress y la otra para la base de datos MySql:

Illustration 26: Máquinas virtuales de los contenedores de WordPress y MySQL

Anotamos la dirección IP <WORDPRESS_IP> de la máquina virtual soportando el servidor WordPress (cuyo nombre empiezo por “APP”) y vamos a la siguiente URL para abrir la consola de administración del servidor WordPress:

https://<WORDPRESS_IP>/

Illustration 27: Pantalla de inicio del servidor WordPress

Desde esta pantalla, podemos configurar el servidor WordPress a través de unos pasos muy sencillos, proporcionando la información sobre el administrador del sitio. Una vez que esta configuración queda hecha, podemos acceder a la consola de administración y empezar a trabajar con el servidor WordPress:

Illustration 28: Consola de administración del servidor WordPress

Operación sobre la instancia desplegada

En esta sección, veremos cómo podemos operar la instancia del patrón que hemos desplegado a través de la consola de PureApplication.

Para tener acceso a las funcionalidades de operación sobre la instancia desplegada (sección Patterns > Virtual System Instances), abriremos la consola Instance Console, dando click sobre el ícono Manage desde la página de la instancia:

Illustration 29: Acceso a la “Instance Console”

Se abre una nueva consola que contiene las siguientes secciones:

  • Monitoring
  • Logging
  • Operations
  • Links
  • Main Console

La primera sección, Monitoring, está seleccionada por defecto y nos muestra alguna información básica de monitoreo (tal como el uso actual de CPU, memoria, disco o redes) por máquinas virtuales:

Illustration 30: Sección "Monitoring"

La secunda sección Logging concentra en la misma pantalla todos los archivos de logs de las máquinas virtuales desplegadas (al nivel de la máquina virtual, del sistema operativo y de los contenedores Docker, entre otros):

Illustration 31: Sección "Logging"

Desde esta pantalla, podemos visualizar en vivo los logs y/o descargarlos para enviarlos a otras personas.

La siguiente sección, Operations, nos permite llevar a cabo algunas acciones específicas sobre la instancia del patrón y los contenedores Docker generados. Por ejemplo, desde esta pantalla, podemos gestionar los niveles de logs, aplicar unos fixes sobre la máquina virtual o gestionar las claves SSH para acceder a ésta. Además, podemos aplicar unas operaciones sobre el contenedor Docker, tales como añadir o quitar en vivo otras instancias del mismo contenedor o actualizar su imagen Docker:

Illustration 32: Sección "Operations"

Las últimas secciones Links y Main Console nos permiten acceder directamente a algunos endpoints aplicativos y volver a la consola principal de PureApplication. Todas estas opciones disponibles en la consola Virtual Console ayudan significativament a simplificar la operación de nuestras cargas de trabajo de tipo Docker y permiten a los operadores ahorrar mucho tiempo cuando tienen que administrar a las mismas.

Conclusion

En este artículo, hemos presentado las ventajas de la plataforma PureApplication para ejecutar y administrar cargas de tipo Docker. En un primer lugar, hemos desplegado un registro privado de Docker adentro de PureApplication y hemos explicado cómo configurar un cliente externo de Docker para que se conecte a este registro privado y transfiere las imágenes Docker hacia PureApplication. Posteriormente, hemos aprendido cómo crear un patrón incorporando imágenes Docker, cómo desplegarlo y por último cómo aprovechar las facilidades de la consola de PureApplication para administrar de manera sencilla nuestro despliegue.

References


Recursos para Descargar


Comentarios

Inicie Sesión o Regístrese para agregar comentarios.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Cloud computing
ArticleID=1033378
ArticleTitle=Primeros pasos con Docker y PureApplication
publish-date=06092016