Favio Medrano
Full Stack Developer - Big Data Analyst.
Favio Medrano @favo
¿Por qué contenedores?
Hay retos como facilitadores de servicios
Multiples tipo de servicios
Sitios web
Apache (+módulos), mysql, php (versión ?), nginx
Bases datos
SQL (mariadb,mysql,postgrees), NonSQL(mongo,couchdb)
API backend
NodeJS, Python DJANGO, ruby,PHP
Entornos para deployment
Maquina Virtual
Servidor producción
Cluster
PC desarrollo
Cloud
¿Por qué contenedores?
Los contenedores nos sirven para desplegar nuestro microservicio
Multiples tipo de servicios
Sitios web
Bases datos
API backend
Entornos para deployment
Maquina Virtual
Servidor producción
Cluster
PC desarrollo
Cloud
Un sistema que nos permite encapsular cualquier microservicio como un contenedor ligero, portable y auto suficiente.
.. que puede ser manipulado con operaciones estándar y que se ejecuta consistentemente en cualquier plataforma.
Para los desarrolladores
Para "devops" ¿devops dices?
Antecedentes
Lo que dicen en docker.com
Docker es una plataforma abierta para la construcción, distribución y ejecución de aplicaciones distribuidas
docker engine
docker hub
Un runtime ligero, portable y herramienta para la distribución
Servicio cloud para compartir aplicaciones y automatizar flujos de trabajo.
Los contenedores están aislados, pero comparten OS y donde sea necesario, binarios y librerías
Docker vs VMs
Docker, posibilidades
El workflow
Entorno desarrollo
Despliegue
UPS power supply 1
SNMP-Protocol
UPS power supply 2
SNMP-Protocol
Precision AC
SNMP-Protocol
Rack Sensors
SNMP-Protocol
backend agent
SNMP querys
Linux, snmp-drivers, python3, snmppy module, mongoclientpy
mongodb
¿Arquitectura adecuada?, Linux, mongodb
frontend app dashboard
Linux, pahache httpd, mysql, php, mongodb-php, html5
Datacenter-dashboard
El workflow, con un ejemplo
El workflow, con un ejemplo:
Dockerfile - mongodb
01 FROM alpine:edge
02
03 RUN apk add --no-cache mongodb && \
04 rm /usr/bin/mongoperf
05
06 ENV STORAGE_ENGINE wiredTiger
07 ENV JOURNALING yes
08
09 VOLUME /data/db
10 EXPOSE 27017 28017
11
12 COPY run.sh /
13 COPY set_mongodb_password.sh /
14
15 RUN chmod +x /run.sh && chmod +x /set_mongodb_password.sh
16
17 ENTRYPOINT [ "/run.sh" ]
18 CMD [ "mongod", "--auth", "--bind_ip_all"]
# To build
$> docker build . -t docker-mongodb
# To run
$> docker run -d docker-mongodb
FROM python:alpine
# code is here
WORKDIR /app
# Dependency install
# Compiler just needed to build pysnmp package, removing after pysnmp installation
RUN apk add --no-cache gcc musl-dev
# Extra python libraries
RUN pip install pysnmp pymongo
# mibs
COPY mibs/* /usr/share/snmp/mibs/
# Convert mibs into pysnmp format
RUN mibdump.py /usr/share/snmp/mibs/*
# Removing gcc and musl-dev packages, no longer needed
RUN apk del gcc musl-dev
# run docker
CMD ["python","/app/dashboard_backend.py"]
El workflow, con un ejemplo:
Dockerfile - backend agent
El workflow, con un ejemplo:
docker host - centos OS (physical server or VM)
sas
ss
s
archivos mongodb
archivos backend-app
d
alpine-linux image base
python3 backend-app
mongodb database eng
:27017
frontend-php dashboard
:8080
apache-httpd reverse-proxy
:80
archivos log
volume/bind
container
exposed port
host public port
Otro proyecto: Plataforma smid
Postgress
redis
nginx
contenedores
Hospedar microservicios docker
Hospedar microservicios docker
Reverse proxy
Contenedores en HPC
Enfoque distinto, en lugar del despliegue de microservicios buscamos:
¿Por qué no docker?
Contenedores en HPC - El problema
Dependencias, dependencias, dependencias..
Alternativas:
Contenedores en HPC - Singularity
By Favio Medrano
Laminas para seminario contenedores , del plan de seminarios del departamento de computo dirección de telematica de CICESE