Docker Monitoring con Visualizer
Bueno bienvenidos nuevamente, para continuar empezaremos modificando nuestro archivo de docker-compose.yml por favor tomar como referencia el que dejo a continuación:
version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: blackdie79/k8s-demo:latest
deploy:
replicas: 5
restart_policy:
condition: on-failure
resources:
limits:
cpus: "0.1"
memory: 50M
ports:
- "80:80"
networks:
- webnet
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
- webnet
redis:
image: redis
ports:
- "6379:6379"
volumes:
- "/home/docker/data:/data"
deploy:
placement:
constraints: [node.role == manager]
command: redis-server --appendonly yes
networks:
- webnet
networks:
webnet:
Bien acá vemos cosas nuevas:
El tag de volumes dentro de la sección de visualizer que le da al visualizador acceso al archivo de socket del host para Docker, y una clave de ubicación, garantiza que este servicio solo se ejecute siempre en el Swarm Manager, nunca un Worker. Esto se debe a que este contenedor, creado a partir de un proyecto de código abierto de Docker, muestra los servicios de Docker que se ejecutan en el Cluster.
También agregamos un contenedor con la base de datos distribuida llamada Redis, que nos ayudará con el tema de persistencia de datos, para esto en volumes declaramos que utilizara la ruta “/home/docker/data:/data” para almacenar los datos.
Ok, para continuar debemos de trabajar nuevamente en nuestro Swarm Manager(Master Node), y vamos a correr el siguiente comando:
Linux:
eval $(docker-machine env myvm1)
Windows:
& "C:\Program Files\Docker\Docker\Resources\bin\docker-machine.exe" env myvm1 | Invoke-Expression
A continuación creamos la ruta que necesita Redis:
docker-machine ssh myvm1 "mkdir ./data"
Ahora hacernos el deploy o despliegue de la aplicación:
docker stack deploy -c docker-compose.yml myApp
Y obtendremos un resultado parecido al siguiente en nuestro terminal:
$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
x7uij6xb4foj myApp_redis replicated 1/1 redis:latest *:6379->6379/tcp
n5rvhm52ykq7 myApp_visualizer replicated 1/1 dockersamples/visualizer:stable *:8080->8080/tcp
mifd433bti1d myApp_web replicated 5/5 tonyman/k8s-demo:latest *:80->80/tcp
Bien si consultamos nuestro navegador ahora vemos que ya cuenta y mantiene el número de visitas de forma correcta:
Y de igual manera por el puerto de salida 8080 tenemos nuestro monitor de contenedores visualizer de Docker:
Bueno esto a sido todo para la serie de Docker, espero les haya gustado bastante y que por mi parte la explicación esté bien clara para todos. Cualquier consulta estamos a la orden y Gracias!!